高频面试题:java线程间6种状态,与状态间的相互转换条件
前置知识:一个cpu内核只能执行一个线程,如果有多个线程,则根据系统调度,根据分配的时间片执行不同的线程。因此,一个程序不是一直在执行,而是随着时间片的分配,执行–>停止–>执行循环往复,如此线程就有了不同的状态。
Java面试常见问题:Java线程的六种状态
处于等待态的线程需要等待其他线程的指示才能继续运行,比如其他线程 join 结束,或者调用了对象的 notify 或 notifyAll 方法通知唤醒,或者执行 Locksupport.unpark 方法。
java线程状态之WAITING(等待)
最后,我们还可以使用 LockSupport 类的 park 静态方法将线程设置为 WAITING 状态。这很重要,因为同步块在代码中需要同步代码块,这会强制刷新所有变量,如果不需要,可能会降低性能。