考虑两个不能同时执行的方法 a() 和 b()。可以使用 synchronized 关键字来实现这一点,如下所示。我可以按照下面的代码使用 AtomicBoolean 达到相同的效果吗?
final class SynchonizedAB {
synchronized void a(){
// code to execute
}
synchronized void b(){
// code to execute
}
}
尝试使用 AtomicBoolean 实现与上述相同的效果:
final class AtomicAB {
private AtomicBoolean atomicBoolean = new AtomicBoolean();
void a(){
while(!atomicBoolean.compareAndSet(false,true){
}
// code to execute
atomicBoolean.set(false);
}
void b(){
while(!atomicBoolean.compareAndSet(false,true){
}
// code to execute
atomicBoolean.set(false);
}
}