Java的多线程控制
程序员文章站
2022-07-12 19:35:10
...
->Java的多线程控制在多线程编程中经常会用到,线程在不同的方法调用后会产生多种状态之间的切换,在这里我做了一个总结,下图为线程的状态控制图:
->状态说明:
新建:线程对象被创建后的状态。
就绪:调用线程对象的start方法后,线程进入就绪状态。
->如果CPU此时空闲,可以分配给该线程时间片,则立即进入运行状态。
->如果CPU繁忙,线程仍然在就绪状态下等待。
运行:线程在就绪状态下获取时间片即可进入运行状态。
->如果时间片运行结束,或者调用了yield方法,该线程进入就绪状态等待下次运行。
->如果线程调用sleep、join、wait或遇到同步lock时,进入阻塞状态。
->如果线程执行完毕、调用interrupt方法或者主线程执行结束时,该线程进入终止状态。
阻塞:线程在运行时通过调用sleep、join、wait或遇到同步lock时线程进入阻塞状态。
->如果sleep结束会解除sleep方法引起的阻塞,该线程进入就绪状态。
->如果join结束会解除join方法引起的阻塞,该线程进入就绪状态。
->如果其他线程调用了notify、notifyAll方法会解除wait方法引起的阻塞,该线程进入就绪状态。
->如果线程执行了interrupt方法,则线程终止。
终止:线程生命周期结束。
上一篇: Java synchronized