多线程的五大状态

线程的五大状态:

                                   线程从创建、运行到结束总是处于下面五个状态之一              

多线程的五大状态_第1张图片

1.新生状态:
      对象一旦建立就处于新生状态(Thread st = new Thread();)。 当一个线程处于新生状态时,程序还没有开始运行线程中的代码

2.就绪状态:

     线程建立后处于新生状态,后就调用start()方法进入就绪状态,即线程进入就绪队列等待着Cpu的调度。进入就绪状态不一定会被立即调用,是由Java运行时系统的线程调度程序(thread scheduler)来调度的。

    有四种可能进入就绪状态:1.start()方法的调用。2.阻塞状态解除。3.yield()方法调用。4.Jvm中断此线程

3.阻塞状态:

     当线程获得CPU时间后,它才进入运行状态,真正开始执行run()方法.

4.阻塞状态:

    当调用sleep(),wait()或同步锁时,线程会进入阻塞状态。run()方法不会再往下执行,在阻塞队列中。等阻塞时间排除,会重新进入就绪状态,重新和新的线程公平的竞争CPU资源。

5.死亡状态:

     线程结束运行后,就进入死亡状态,注意不会再进入新生状态。

     有两个原因会导致线程死亡:
         1) run方法正常退出而自然死亡,
         2) 一个未捕获的异常终止了run方法而使线程猝死。
        为了确定线程在当前是否存活着(就是要么是可运行的,要么是被阻塞了),需要使用isAlive方法。如果是可运行或被阻塞,这个方法返回true; 如果线程仍旧是new状态且不是可运行的, 或者线程死亡了,则返回false.

 

你可能感兴趣的:(Java学习)