聊聊贯穿Java并发编程的中断机制

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

在学习/编写并发程序时,总会听到/看到如下词汇:

  • 线程被中断或抛出InterruptedException

  • 设置了中断标识

  • 清空了中断标识

  • 判断线程是否被中断

在 Java Thread 类又提供了长相酷似,让人傻傻分不清的三个方法来处理并发中断问题:

  • interrupt()

  • interrupted()

  • isInterrupted()

看到这我不禁会问自己:

什么是中断机制?

刚刚接触【中断】这个词时,先入为主的概念就是“直接中断/打断”正在做的事,使其停止。我的理解是这样的:

你:在打游戏

女朋友:别打游戏了,赶快过来吃饭

你:听到女朋友招呼之后立马中断手中的游戏乖乖过去吃饭

在多线程编程中,中断是一种【协同】机制,怎么理解这么高大上的词呢?就是女朋友叫你吃饭,你收到了中断游戏通知,但是否马上放下手中的游戏去吃饭看你心情 。在程序中怎样演绎这个心情就看具体的业务逻辑了,Java 的中断机制就是这么简单

如果还没改变这个先入为主的概念,我怀你没有女朋友(😭)我们拥抱一下

为什么会有中断机制?

中断是一种协同机制,我觉得就是解决【当局者迷】的状况

现实中,你努力忘我没有昼夜的工作,如果再没有人告知你中断,你身体是吃不消的。

在多线程的场景中,有的线程可能迷失在怪圈无法自拔(自旋浪费资源),这时就可以用其他线程在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值