一、Java的6种线程状态
new:线程创建,还未启动
runnable:可运行状态,由线程调度器安排执行
ready:就绪状态
running:执行
waiting:等待被唤醒,如自旋
timed waiting:隔一段时间后自动唤醒
blocked:被阻塞,只有synchronized才会到该状态
terminated:线程结束
二、线程打断
1、interrupt:打断某个线程,只是设置线程的标志位,并不是真正的打断线程。是不能中断正在竞争锁的线程
isInterrupted:查询线程是否被打断
static interrupted:查询当前线程是否被打断过,并重新设置标志位
2、如果想打断锁争抢过程用ReentrantLock,使用lockInterruptibly方法
sleep方法在睡眠的时候,不到时间是没办法叫醒的,这个是时候可以用interrupt设置标志位,然后必须得catch到interruptedException来进行处理,决定继续睡或者其他逻辑
捕获到异常后java会自动进行标记位的复位
三、线程的结束
面试题:如何优雅的结束一个线程?
1、stop方法,但是该方法已被弃用
因为使用stop方法会释放所有锁,加锁主要为了数据一致性问题,使用stop释放所有锁后,数据容易不一致
2、使用interrupt,捕获异常并且处理
标签:状态,stop,线程,打断,interrupt,方法 来源: https://www.cnblogs.com/lyc-code/p/15972434.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。