线程生命周期

这里写图片描述 
1、线程的生命周期:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。 
2、当线程对象调用了start()方法之后,该线程处于就绪状态,Java虚拟机会为其创建方法调用栈和程序计数器,处于这个状态中的线程并没有开始运行,只是表示该线程可以运行了。至于该线程何时开始运行,取决于JVM里线程调度器的调度。 
3、启动线程使用start()方法,而不是run()方法。 
4、只能对处于新建状态的线程调用start(),否则将引发IllegalThreadStateException异常。 
5、所有现代的桌面和服务器操作系统都采用抢占式调度策略,只有当一个线程调用了它的sleep()方法或yield()方法后才会放弃所占用的资源。 
6、线程从阻塞状态只能进入就绪状态,无法进入运行状态。 
7、程序会以如下三种方式结束,结束后就处于死亡状态。 
(1)run()或call()方法执行完成,线程正常结束。 
(2)线程抛出一个未捕获的Exception或Error。 
(3)直接调用该线程的stop()方法来结束该线程——该方法容易导致死锁,通常不推荐使用。 
8、isAlive()方法测试某个线程是否已经死亡。

posted @   小小飞侠  阅读(171)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2015-08-07 Set\HashSet集合为什么能去重(转)
2015-08-07 Set去掉重复的元素
点击右上角即可分享
微信分享提示