线程的五种状态
1 .新的新状态
当程序使用new关键字创建线程时,线程处于新状态,线程尚未启动。
调用start()方法时,线程启动并进入Runnable状态。
2.可运行状态(就绪状态)
线程准备好了,等待获取CPU。
3.运行状态运行状态
A.假设线程已经获取了CPU,它进入Running状态,开始执行线程体(run方法中的内容)
B.注意3360如果系统只有一个中央处理器内核(单核),那么在同一时间点只有一个线程在运行。
如果系统有两个中央处理器内核(两个内核),则两个线程可以在同一时间点运行。
假设当线程数大于处理器数时,多个线程仍会轮换。
C.当一个线程开始运行时,如果不是瞬间完成,就不可能一直处于运行状态(走走停停,系统将时间片平均分配给每个线程)
该线程将在执行过程中被中断,以便给其他线程执行的机会。
D.调用yield()可以使线程进入Runnable状态(Runnable state)
4.阻止(挂起)状态
A.调用Sleep()的线程自愿放弃被占用的CPU资源。
B.线程调用阻塞IO方法,在方法返回之前线程被阻塞。
C.当一个线程被阻塞时,其他线程就有机会执行。当阻塞结束时,线程将进入可运行状态。
而不是直接进入运行状态。
5.死(端)状态
当线程的run()执行结束时,线程进入Dead。不要试图在死线程上调用Start(),会出现异常。