如何安全中断一个正在运行的线程?

30 天前
 dvsusan123
线程是操作系统进行运算调度的最小单位,所以线程是系统级别的概念。

在 Java 中,可以使用 Thread.interrupt()方法安全中断一个正在运行的线程。

其中 Thread.interrupt()方法用于设置线程的中断状态为"中断"。它并不会直接终止线程的执行,而是给线程一个中断信号。

在执行线程的代码中,可以通过检查 Thread.interrupted()或 Thread.currentThread().isInterrupted()方法来判断线程是否被中断。

如果线程被中断,应根据具体情况决定如何处理中断。可以选择抛出 InterruptedException 异常、恢复线程到一个安全的状态,或者终止线程的执行。

如果线程处于等待状态(如 Thread.sleep()、Object.wait()、Thread.join()等),那么线程会立即从等待状态返回,并且 InterruptedException 异常会被抛出。

使用 Thread.interrupt()方法可以安全地中断一个正在运行的线程,并通过 Thread.currentThread().isInterrupted()方法检查线程的中断状态。在处理中断时,可以选择抛出 InterruptedException 异常、恢复线程到安全状态或者终止线程的执行。
2832 次点击
所在节点    Java
22 条回复
cppc
30 天前
想引流就搞点像样的东西
dvsusan123
30 天前
最近就业形式有点困难,我建了一些工作内推群,里面有一些工作内推的机会,有需要的小伙伴,可以加我微信:su_san_java ,备注:v2ex+所在城市,即可拉你进群。
dvsusan123
30 天前
@cppc 别急,我的干货文章很多,后面会逐步发表的,第一次玩这个网站,先发一篇简短的内容跑一下流程。
kenvix
30 天前
这种 Java 入门的东西就没必要拿来引流了吧
dvsusan123
30 天前
@kenvix 哈哈哈,收到,我后面发点有深度的,先发一篇文章试试水。
bashbot
30 天前
推广请发推广节点
建议先去看下 guide https://v2ex.com/go/guide
在这个论坛发言请珍惜自己账号和 IP
dvsusan123
30 天前
@bashbot 收到
macaodoll
30 天前
毫无营养的水文
dlmy
30 天前
这是 v 站,一个技术大佬扎堆的地方,发入门级别的东西确实会挨喷。

Java 的 Thread 类在 JVM 中只是一个对象而已,它内部的关键方法都是 native 修饰的,而在 JVM 中是通过 JNI 技术调用 native 修饰的方法。
当你创建一个 Java Thread 对象时,在这个对象内部,也会创建一个操作系统的线程,这样就把 Java 的线程和操作系统的线程关联起来了。
在你上面说的调用 Thread.interrupt 方法,增加一个线程中断标识位,底层调用的是 pthread 库中的函数,最终调用操作系统级别的 os::interrupt...


在 v 站想引流的话真的需要搞点像样的东西,别弄一些烂大街的八股文,这样会显得自己 low level 。
fzdwx
30 天前
我的评价是一托
dvsusan123
30 天前
@macaodoll 长篇好文要注册满 15 天之后,才能发。
thomaspaine
30 天前
@dvsusan123 那就别发了,你猜多少人已经直接 block 你了
zfjdif
30 天前
block 了,下次记得上干货 XD
IvanLi127
29 天前
能换个地方侮辱人么?快去做点功课吧,这里没那么多韭菜给你割。
dvsusan123
29 天前
@IvanLi127 有些人太自以为是了,我怎么割韭菜了?
totoro52
29 天前
能上 V 站就可以排除掉大部分小白了,和你发的文章内容太冲突了, 推不开的
zuixinwenyue
29 天前
怎么举报?
tongqe
29 天前
站长,把这人屏蔽了吧
sleepybear1113
29 天前
本来点进来还以为又有什么骚操作呢,结果一看就是烂大街的东西。甚至还不如 anything 那个人的帖子有趣
dvsusan123
29 天前
@zuixinwenyue 你敢不敢写一篇文章出来看看?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1034322

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX