初始,就绪,运行,阻塞,结束

- 线程被创建出来后处于等待状态(new Thread
- 调用线程的.start()方法后进入就绪状态(也就是可以运行的状态
- 线程有等待状态转为运行态是通过CPU来决定的通常没办法让一个线程强制马上运行(即使Java中有设置运行优先级的方法,就算把优先级设置很高,也只是增加了让线程先运行的概率并不能保证一定先运行
- 在运行态的线程可以通过调用yield()方法来使得从运行态返回就绪态等待CPU再次调度(这种操作也称为线程让步
- 在运行态的线程可以通过调用sleep/wait/join方法让线程进入阻塞状态
- 如果是通过sleep方法进入阻塞状态的那么等设定的睡眠时间结束后线程就会自动变为就绪(Runnable)状态
- 如果是通过wait方法进入的阻塞状态那么就需要等待在其他线程中调用notify/notifyAll方法使线程返回就绪状态
- 如果是使用join方法进入的阻塞状态,这种方法一般是为了防止主线程(父线程)优先于子线程运行结束导致子线程没运行完就结束了当join的线程运行完毕后父线程会继续运行
- 有运行状态转为结束状态/死亡状态(Dead)正常情况是线程完整运行结束,如果在运行中出错也会进入死亡状态

本文深入解析线程从创建到结束的整个生命周期,包括初始、就绪、运行、阻塞和结束五个状态。详细介绍了线程如何从等待状态转为运行态,以及运行态线程如何通过yield、sleep、wait和join方法进入阻塞状态。此外,还探讨了线程的运行优先级、让步操作和阻塞状态的解除条件。

被折叠的 条评论
为什么被折叠?



