一文了解JAVA线程的中断(Interrupt)机制

本文介绍了Java线程的中断机制,这是一种协作而非强制中断的方式。线程通过中断标识来处理中断请求,主要涉及interrupt(), isInterrupted(), interrupted()三个方法。在可中断的阻塞状态下,如sleep、wait、join等,中断会抛出InterruptedException并清除中断标记。而在不可中断的阻塞,如某些I/O操作或加锁时,中断请求只能由线程自己处理。文章还提供了实践案例和常见使用模式。" 127091053,14804575,JS模块化深入理解:ES Module与四大规范解析,"['javascript', '前端', 'js', 'es', 'Webpack']
摘要由CSDN通过智能技术生成

介绍

Java的中断是一种协作机制,也就是说通过中断并不能直接中断另外一个线程,而需要被中断的线程自己处理中断。

在Java的中断模型中,每个线程都有一个boolean标识,代表着是否有中断请求(该请求可以来自所有线程,包括被中断的线程本身)。例如,当线程t1想中断线程t2,只需要在线程t1中将线程t2对象的中断标识置为true,然后线程2可以选择在合适的时候处理该中断请求,甚至可以不理会该请求,就像这个线程没有被中断一样。

中断方法

线程中断相关的方法主要是下面的3方法,他们具体的作用见下面的表格:

方法名 介绍
void interrupt() 中断线程,设置线程的中断位true
boolean isInterrupted() 检查线程的中断标记位,true-中断状态, false-非中断状态
static boolean interrupted() 静态方法,返回当前线程的中断标记位,同时清除中断标记,改为false。比如当前线程已中断,调用interrupted(),返回true, 同时将当前线程的中断标记位改为false, 再次调用interrupted(),会发现返回false

记忆方法推荐:

  • interrupt()是一个动词,表示中断线程。
  • Interrupted是一个形容词,用于检查线程的中断位&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值