问个技术问题, Java 中的队列中断的问题

2022-05-11 13:20:39 +08:00
 SachinBeyond
如果保证队列中一直有数据,不会阻塞 take ,取出数据就不做任何处理,丢弃,然后取下一个。这个时候其他线程对他发起中断,那么这个消费线程会抛出中断异常吗?

就是说 take 非阻塞状态为是否会抛出中断异常?
736 次点击
所在节点    问与答
2 条回复
Uyuhz
2022-05-11 13:50:41 +08:00
不知道我有没有理解错问题...看了下 LinkedBlockingQueue 和 ArrayBlockingQueue 中的 take 方法(其他没看),无论是否有元素都会先调用 ReentrantLock 的 lockInterruptibly 方法(实际在 AQS 中),而这个方法在线程中断时就会抛出中断异常,根本不会走到 await 。
SachinBeyond
2022-05-11 16:54:46 +08:00
@Uyuhz 好的谢谢

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

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

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

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

© 2021 V2EX