jvm线程模型 JVM线程状态都有哪几种?
JVM线程状态都有哪几种?
[1]新状态:创建线程实例时,即使用New关键字和thread类或其子类创建thread对象。此时,线程处于新状态。处于新状态的线程有自己的内存空间,但线程没有运行。此时,线程不活动。
[2]可运行:通过调用线程实例的start()方法启动线程,使线程进入可运行状态。处于就绪状态的线程已经有了运行条件,但是它还没有分配给CPU,也就是说,它不会立即执行。此时,它处于线程就绪队列中,等待系统将CPCU分配给它,等待状态不是线程处于活动状态的执行状态。
[3]运行状态:一旦获得CPU(由JVM选择),线程将进入运行状态,线程的run()方法将被执行。处于运行状态的线程将在自己的run()方法中执行该操作,直到它调用其他方法,或等待某些资源阻塞,或完成任务并死亡。如果在给定的时间段内运行失败,处于运行状态的线程将在自己的run()方法中执行该操作,当执行结束时,它将被系统替换并返回到线程的等待状态;此时,线程处于活动状态。
[4]阻塞:线程通过调用join()、sleep()、wait()被阻塞,或者资源被临时使用;处于阻塞状态的线程仍然处于活动状态。
[5]死状态:当线程的run()方法异常完成、中断或退出时,线程将进入死状态。此时,可能仍然存在线程的实例对象。当该线程不再被视为独立线程时,该线程的独立调用堆栈已被解析。一旦线程进入死状态,它就不能再进入独立线程的生命周期。对于处于死状态的线程调用start()方法,将出现运行时异常;处于死状态的线程不是活动的。
求各位大神,Java多线程看哪本书好?
推荐Java并发编程练习本书。
本书从并发和线程安全的基本概念出发,介绍如何使用类库提供的基本并发构建块来避免并发风险、构造线程安全类和验证线程安全规则。
如何将较小的线程安全类组合成较大的线程安全类,如何使用线程提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单行程序子系统的响应能力,如何确保并发程序执行预期的任务,以及如何提高并发代码的性能和可扩展性。
最后,介绍了一些高级主题,如显式锁定、原子变量、非阻塞算法以及如何开发自定义同步工具类。
总之,本书介绍完整,原理分析透彻。我希望我的回答能帮助你。
jvm线程模型 jvm最大线程数 tomcat线程和jvm线程区别
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。