我想实现取消线程的通常的协作机制。
但是,Java内存模型仅在JDK5之前的环境中才在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变量。
还有其他选择吗?

最佳答案

JDK5中还添加了AtomicBoolean,因此除非您正在使用backport,否则此功能不可用。但是,是的,来自backport的原子类可能是最好的选择,正如您所知,它是由精通每种JVM虚拟机规范版本的人编写的。

关于java - 具有最便宜性能的 volatile 的替代品,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/703794/

10-12 18:06
查看更多