第二篇:线程七种状态

1.线程状态

  • 初始化状态
  • 就绪状态
  • 运行状态
  • 死亡状态
  • 阻塞状态
  • 超时等待
  • 等待状态

    1.1 初始化状态

        通过实现Runnable接口,new出来实例,线程进入初始化状态

    1.2 就绪状态

        初始化状态调用start()方法,程序进入了就绪状态。

            ①调用start(),sleep()结束,join()方法结束,调用yield()方法。

            ②某个线程拿到对象锁,锁池里的对象拿到对象锁。

            ③当前时间片用完。

    1.3 运行状态

        线程抢占到CPU资源。

    1.4 死亡状态

        线程正常执行完、调用stop()方法、抛出异常或ERROR。

    1.5 阻塞状态

        发生I/O输入,进入同步代码块

    1.6 超时等待

        执行Thread.sleep()方法,此方法是Thread内的方法,会抛出异常。

    1.7 等待状态

      调用Object里的wait()方法。

比较点 wait() sleep()
所属类 Thread Object
控制资源 释放资源,让出CPU 不释放资源,仅仅让出CPU
方法结束时刻 调用notify()或notifyAll() 超时时间到
调用方法后线程状态  线程释放对象锁,进入等待锁池 指定时间不运行
方法调用结束后

等待notify()、或者notifyAll()同步方法执行完拿到锁,

进入就绪状态

方法调用结束,进入就绪状态

    1.7 线程状态的切换

 

猜你喜欢

转载自www.cnblogs.com/dc-earl/p/9594162.html
今日推荐