Oll*_*liP 1 java multithreading compare-and-swap
我经常遇到这样的情况,我希望这个问题可以像这样解决:
AtomicBoolean bool1 = new AtomicBoolean();
AtomicBoolean bool2 = new AtomicBoolean();
boolean expected = false; // whatever
boolean update = false; // whatever
if(bool1.get()) {
bool2.compareSet(expected, update);
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为可以在bool1.get()和之间进行上下文切换bool2.compareSet(...).那么,什么是需要的是我会称之为"三元原子布尔",这是一件好事,可以做bool1.get()和bool2.compareSet(...)在一个CAS操作.
我的问题是它是否可以完成.有没有人知道有人在考虑这个问题(一些大学)或有人知道现有的解决方案接近所需(我的意思是没有锁,同步块,互斥,semapores,但使用CAS仅基于算法).