zoukankan      html  css  js  c++  java
  • java复习-多线程

    和线程之间的关系:

    进程:进程是程序的一次动态执行过程,他经理了代码加载,执行到执行完毕的一个完整过程,这个过程也是进程本身从产生,发展到最终消亡的过程。

    线程:线程是实现并发机制的一种有效手段,进程和线程一样,都是实现并发的一个基本单元。

    java中多线程实现:

    集成Thread和实现runnable

    通过线程类的start方法来并发执行线程里面的线程主体内容。

    Runnable线程的执行方式如下:


    Thread是Runnable接口的子类.

    Thread类与Runnable接口的区别:

    1 使用Thread类在操作多线程的时候无法达到资源共享的目的,runnable接口能够实现资源共享;

    2  Runnable接口比起继承Thread类有如下的明显的优点:

     

    • 适合多个相同程序代码的线程去处理同一个资源。

    • 可以避免由于但继承局限所带来的影响。

    • 增强代码的健壮性,代码能够多线程共享,代码和数据独立

     

    线程状态:

     

    创建状态:线程对象创建之时:Thread t = new Thread();

    就绪状态:t.start(),调用start方法,等待cpu进行调度;

    运行状态:执行线程里面的run方法;

    阻塞状态:暂时停止执行,可能将资源交给其他线程使用,调用线程的wait或者sleep方法;

    终止状态:线程执行完毕后不在使用了。

    线程常用操作方法:

    取得线程和设置线程名称:

    Thread.currentThread().getName(); -- >获取线程名称。

    当然也可以通过setName方法进行设置。

    java运行时候启动几条线程:

    2条;

    1条jvm线程,一条gc线程。

     

    判断线程是否运行:

    强制线程执行:

    调用线程的join()方法,其他线程无法运行,必须等待此线程完成后才能继续执行。

    线程休眠:

    Thread.sleep()。

    线程中断:

    一个线程被另外一个线程中断其操作的状态,使用interupt()方法完成。

    后台线程:

    只要程序没执行完,java进程不会消失,设置后台线程,即使进程消失,线程继续执行。

    通过setDaemon()来实现。

    线程优先级:

     

    线程礼让:

    同步和死锁:

    同步是解决什么问题呢,一个数据在读取的时候,其他线程访问该线程,那么这时候就应该使用同步。

    同步代码块:

    同步方法:

    生产者消费者问题:

     

    线程生命周期:

    线程有:

    suspend()暂时挂起线程

    resume()恢复挂起的线程

    stop()停止线程

    这三个方法容易导致死锁问题,不推荐使用。

    比较好的停止线程的方法:

    通过标志位让线程停止。

  • 相关阅读:
    Java抽象类、接口能否有构造方法
    Java堆溢出、栈溢出示例
    typora常用快捷键
    什么是业务逻辑
    解决idea登录github出现的invalid authentication data 404 not found
    SQL常用聚合函数
    oracle存储过程/函数调试
    解决IDEA全局搜索Ctrl+Shift+F失效问题
    如何在win10系统中使用Linux命令
    Java复现NullPointerException异常
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/4831280.html
Copyright © 2011-2022 走看看