java线程中断 interrupt
创始人
2024-05-16 18:47:06
0

1.  线程的状态:

  • new -> 创建完线程,但是还没有启动
  • runnable -> 表示线程是活跃状态
  • terminated -> 表示线程已经结束了

线程在sleep的时候是什么状态?time-waited

2.  stop 终止线程已经被淘汰

简单来说是因为:使用stop方法虽然可以强行终止正在运行或挂起的线程,但使用stop方法是很危险的,就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,因此,并不推荐使用stop方法来终止线程

3. 究竟如何停止线程?

  1. 任务中一般都会有循环结构,只要用一个标记控制住循环,就可以结束任务。
  2. 如果线程处于了冻结状态,无法读取标记,此时可以使用interrupt方法将线程从冻结状态强制恢复到运行状态中来,让线程具备CPU的执行资格

4.  以卡丁车为例(例子)

有两个卡丁车准备通过同一条路,卡丁车1通过之后发送信号给卡丁车2,告诉卡丁车2可以通过:

卡丁一号在通过之后调用了carTwo.interrupt()方法,其实就是告诉卡丁二号,告诉卡丁二号可以出发了。卡丁二号就被标记了interrupted,可以被catch(InterruptedException)捕获到,也就是说发现这个标记,就开始出发

在哪些情况下会抛出InterruptedException?

当线程正在等待、休眠或以其他方式被占用,并且线程在活动之前或期间被中断时抛出。当线程处于Blocked、 waiting、timed_waiting状态或者从这三种状态转换成runnable状态的过程中如果被中断,则会收到interruptedException。

如果线程没有睡眠,调用它的interruptException会怎样?

刚才一直在说,线程只有在不活跃的情况下,被中断,才会触发interruptedException。那么如果线程本就是在正常运行,被中断会怎样,,,,其实,触发InterruptedException只是中断在线程非活跃状态下的表现形式,中断本身和线程是否在活跃状态没有关系,之所以在不活跃状态下中断会抛出异常,是因为线程在不活跃状态下发生中断的时候,如果不抛出异常的话,回不到正常状态,回不到正常运行状态就没法处理中断。即, 如果线程的状态本来就是活跃的,这个时候触发中断线程会假装看不见,继续做他该做的事儿,活跃的线程就相当于把中断无视掉了?这就需要看你的需求了,就是装作假装看不见继续,还是处理一下。

怎样知道自己是否被中断,使用isinterrupted方法或者interrupted方法,就可以返回是否被中断的状态。

前者查看灯开了没有,后者不仅查看灯开了没有,还要帮关上。

相关内容

热门资讯

热搜第一!南京VS苏州,诞生两... 在60396名现场观众的注视下,“苏超”诞生了首场0比0平局的比赛。在60396名现场观众的注视下,...
辟谣2025年7月5日陨石撞击... (转自:上林下夕)关于“2025年7月5日陨石撞击太平洋”的传闻,目前科学界和权威机构已明确辟谣。以...
雷蛇战锤狂鲨 V3 有线入耳式...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! IT之家 7 月 5...
暴风城的勇士 暴风城的勇士15个冠军徽记,,首先你要先去接日常,做3天日常,吧自己阵营勇士刷出来,然后用15个冠军...
巴西总统卢拉:金砖国家对全球经... 当地时间7月5日,金砖国家工商论坛在巴西里约热内卢开幕,巴西总统卢拉、副总统杰拉尔多·阿尔克明出席论...
在那边的英文句子怎么写 在那边的英文句子怎么写在那边的英文句子怎么写在那边英语:It is over there.
保障重点工程建设,浦东王港派出... 转自:上观新闻7月2日正午,金谷智能终端制造基地工地宿舍内,工地专管民警曹德生在走访中检查了工友们常...
只为回应人间烟火的重托 转自:千龙网他们的故事如同滚烫的星河,从大连的山海间奔涌而来,没有雷霆万钧的口号,只有肩头的百姓冷暖...
香港市民向山东舰“回归”舰员赠... 来源:中国新闻网 中新社香港7月5日电 (记者 戴梦岚)“回归,有位香港老人给你准备了生日礼物,快来...
个人创业贷款怎么办理,大学生创... 很多创业者在创业初期,苦于资金不足,无法支撑你的创业梦想。如果你是刚毕业的大学生,建议你先工作,积累...