多线程6中状态间的转换

Java多线程6种状态的转换

  1. NEW(新建) 创建线程对象时
  2. Runnable(可运行) 线程可以在Java虚拟机上运行的状态,可能是正在运行,也可能是在等待CPU资源,简单来说就是调用了start方法
  3. Blocked(锁阻塞) 当线程要获取一个对象锁,但是这个对象锁正在被其他线程占用,则该线程进入阻塞状态;当该线程获取到对象锁时就会变成可运行状态
  4. Waiting(无限等待) 线程调用wait()方法,进入Waiting状态,在这个状态下,线程是不能自动醒来的,只能等待另一个线程调用notify()/notifyAll()方法来唤醒自己(注意:调用wait()和notify()方法的必须要是同一个对象)
  5. Timed Waiting(计时等待) 调用sleep()方法或wait(long timeout)方法时进入Timed Waiting状态,如果是sleep()方法,时间到了会结束该状态,如果是wait(long timeout),时间到了或者被其他线程唤醒,就会结束该状态
  6. Teminated(被终止) 线程run方法执行完毕而正常终止,或者执行出现没有捕获的异常而导致的异常终止

多线程6中状态间的转换_第1张图片

你可能感兴趣的:(多线程,java,多线程,thread)