在widlfly任务线程中中断是一个坏主意吗?

问题描述 投票:0回答:1

我在 Wildfly 中的两个任务线程之间存在竞争条件。我的系统在多个其他系统之间进行协调。我有一个保存交互状态的对象。有时,同一交互的两个请求会同时出现。我正在研究在处理两个请求的任务线程之间进行协调的方法。

在工作线程中使用 Thread.interrupt() 是一个坏主意。

我目前在 Wildfly 18 上使用 java 8

multithreading synchronization wildfly
1个回答
0
投票

Thread.interrupt()
是一个相当粗糙和简单的机制。它适用于简单的“处理内容,直到我告诉你停止”用例,其中你创建一个工作线程,并且该线程运行一个检查
interrupted()
的循环。如果其他人创建了该线程,并且该线程正在执行调用您的代码的代码,并且较低层代码碰巧检查中断,则它可能会误解中断的来源以及应该采取的措施。

Wildfly 不太可能检查线程的中断标志,因此您可能是安全的。然而,中断一个不是您自己直接创建的线程是一种不好的形式。

中断标志没有什么神奇的,甚至没有什么特别的。它只是线程拥有的原子布尔值。如果您想使用原子来帮助线程之间的协调,您可以自己制作一个,然后您就会知道其他代码不会误解它。话虽如此,原子很难用于线程之间的协调,并且依赖它们的代码往往比使用更高级别原语的代码更容易出现错误。

© www.soinside.com 2019 - 2024. All rights reserved.