04. 无锁
无锁
锁是一种对操作的同步手段,但是也不是唯一的手段,例如使用空间换时间的思路同样可以解决问题,非阻塞的同步方式也可以达到并发的目的。
最简单的一种非阻塞的同步就是
在
public final int getAndSet(int newValue) {
for (;;) { // 不停循环直到成功
int current = get(); // 获取当前的值
if (compareAndSet(current, newValue)) { // 若当前的值未受其他线程影响,则设置为新值
return current; // 返回新值
}
}
}
以时间换空间、以空间换时间都是实现代码的常用思路,在不同的地方应该使用不同的方式去达到业务需求。