我试图理解以下两个代码块之间的区别
AtomicBoolean ab = new AtomicBoolean(false);
using the following to get and set state. .
ab.get();
ab.set(X);
vs.
private boolean ab = false;
private final Object myboollock = new Ojbect();
public void setAB(boolean state)
{
synchronized(myboollock)
{
ab = state;
}
}
public boolean getAB()
{
synchronized(myboollock)
{
return ab;
}
}
我需要线程保护一个 boolean 值,仅此而已,并且有 以前用过后面的方法,但想开始用Atomic 对象,(如果)它们是安全的?,
最佳答案
如果所有您尝试做的是获取和设置单个boolean
值原子,那么是的 - 您可以使用AtomicBoolean
而不是没有任何同步。
当然,synchronized
允许更广泛的用途,例如在 block 内执行多个操作而不会丢失锁,或者将其用于等待/通知。所以它不像 AtomicBoolean
是同步的通用替代方案 - 但在这种情况下,您可以使用它代替同步。
关于java - AtomicBoolean vs Synchronized block ,有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28155245/