美文网首页
线程——5种状态及转换

线程——5种状态及转换

作者: Samuel_Tom | 来源:发表于2018-09-06 14:39 被阅读0次
    线程状态图

    1、新建状态:创建了一个线程;

    2、可运行状态:调用了线程的start()方法,等待操作系统的调度;

    3、运行状态:线程被操作系统调度,获得了CPU使用权,执行程序代码;

    4、阻塞状态:线程因某种原因进入阻塞状态,让出了CPU使用权,线程暂停运行,直到进入可运行状态,才有机会被操作系统调度重新进入运行状态,主要有以下三种阻塞情况:

    (1)等待阻塞:运行的线程调用了wait()方法,线程释放锁并进入等待队列,直到被其他线程的notify()或notifyall()唤醒,重新获得同步锁并进入可运行状态;

    (2)同步阻塞:运行的线程在获取对象的同步锁时,若该对象锁被其他线程占用,JVM会把线程放进锁池中去竞争锁,直到获得同步锁并进入可运行状态;

    (3)其他阻塞:运行的线程调用了Thread.sleep()、join()或者发出了IO请求,线程将进入阻塞状态,直到sleep()超时、join()等待线程终止或超时、IO请求处理结束,线程才会重新进入可运行状态;

    5、死亡状态:线程的run()或者main()方法执行结束,线程死亡;

    相关文章

      网友评论

          本文标题:线程——5种状态及转换

          本文链接:https://www.haomeiwen.com/subject/wglxgftx.html