【发布时间】:2023-04-08 01:09:01
【问题描述】:
我想实现取消线程的常用协作机制。 但是,当我处于 JDK5 之前的环境中时,Java 内存模型仅在 JDK5 中得到修复。 我明白,这意味着像 SCIP 所支持的那样做这样的事情是不正确的。
class Worker implements Runnable
{
private volatile boolean _canceled;
public void cancel() { _canceled = true; }
public void run() {
while( ! _canceled )
{
// do my Stuff
}
}
}
我正在考虑使用 AtomicBoolean 来封装 _canceled 变量。 还有其他选择吗?
【问题讨论】:
-
你的是一个布尔值。只有不稳定的多头/双打被打破,对吧?
标签: java multithreading concurrency