Java中的对象是否有任何原子包装?

时间:2015-04-30 14:13:39

标签: java concurrency

我想知道如何用getter / setter将任何实例包装到原子包装器中以使该实例线程安全?

private Console console;

...

@Override
public Callable<Boolean> execute() {
    return new Callable<Boolean>() {
        @Override
        public Boolean call() throws Exception {

            console.print("Hi!");

            // some logic

            console.print("Bye!");

            return true;
        }
    };
}

我需要使Console线程安全。

2 个答案:

答案 0 :(得分:5)

没有神奇的线程安全&#34;子弹。仅仅使所有的getter和setter使用atomics 使你的类线程安全。即使同步所有方法也不会使类成为线程安全的。

答案 1 :(得分:2)

其他人已经指出,使更新原子化本身并不足以保证线程安全。但要回答您的具体问题,是的,java中有原子更新的java.util.concurrent.atomic包,您可以在这里阅读:

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/package-summary.html