page contents

关于interrupt 通知线程中断问题

Pack 发布于 2020-02-08 18:07
阅读 431
收藏 0
分类:Java开发

第一个场景正常:
A:线程创建运行 此时interrupt中标记为false,
运行中开始睡眠(sleep),在睡眠途中 B线程调用A线程的interrupt方法进行通知中断, interrupt方法会唤醒睡眠中的线程,A醒来之后发现睡眠时间未到 继续睡眠, 睡眠方法会判断is_interrupted()状态,是否在自己睡眠过程中有线程是否通知我中断,如果有直接抛出InterruptedException
第二个场景:
A:线程创建运行 此时interrupt中标记为false,
运行中A线程进入有锁的方法抢占锁失败,进行park阻塞,此时B线程调用A线程的interrupt方法进行通知中断, interrupt方法会使A线程进行unpark唤醒,A醒来之后继续 尝试获取锁,获取不到继续park,
问题为: 第二个场景 在A醒来之后有没有对B的中断请求响应?
如果没有 是否需要自己手写对is_interrupted()状态判断进行逻辑处理?

283
Pack
Pack

都是需要自己来处理中断的响应的。
AQS里面,就是自己处理的!

请先 登录 后评论