我想知道如何用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
线程安全。
答案 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