在学习/编写并发程序时,总会听到/看到如下词汇:
-
线程被中断或抛出InterruptedException
-
设置了中断标识
-
清空了中断标识
-
判断线程是否被中断
在 Java Thread 类又提供了长相酷似,让人傻傻分不清的三个方法来处理并发中断问题:
-
interrupt() -
interrupted() -
isInterrupted()

看到这我不禁会问自己:

什么是中断机制?

刚刚接触【中断】这个词时,先入为主的概念就是“直接中断/打断”正在做的事,使其停止。我的理解是这样的:
你:在打游戏
女朋友:别打游戏了,赶快过来吃饭
你:听到女朋友招呼之后立马中断手中的游戏乖乖过去吃饭

在多线程编程中,中断是一种【协同】机制,怎么理解这么高大上的词呢?就是女朋友叫你吃饭,你收到了中断游戏通知,但是否马上放下手中的游戏去吃饭看你心情 。在程序中怎样演绎这个心情就看具体的业务逻辑了,Java 的中断机制就是这么简单
如果还没改变这个先入为主的概念,我怀你没有女朋友(😭)我们拥抱一下
为什么会有中断机制?
中断是一种协同机制,我觉得就是解决【当局者迷】的状况
现实中,你努力忘我没有昼夜的工作,如果再没有人告知你中断,你身体是吃不消的。
在多线程的场景中,有的线程可能迷失在怪圈无法自拔(自旋浪费资源),这时就可以用其他线程在

本文探讨了Java中的中断机制,解释了中断不是直接停止线程,而是一种协同机制。文章介绍了`interrupt()`、`isInterrupted()`和`interrupted()`的区别,以及它们在处理中断标识时的角色。此外,还讨论了中断机制的使用场景、注意事项,并举例说明了如何正确处理`InterruptedException`。最后,提到了`ThreadPoolExecutor`和`FutureTask`中中断机制的应用。
最低0.47元/天 解锁文章

2479

被折叠的 条评论
为什么被折叠?



