Java并发编程之CAS
CAS简介说明
CAS(Compare and swap):他是并发算法中用到的一种技术即:比较和替换是使用一个期望值和一个变量的当前值进行比较
如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值
CAS的使用场景
在程序和算法中一个经常出现的模式就是“check and act”模式先检查后操作模式发生在代码中首先检查一个变量的值
再基于这个值做一些操作
例:
class MyLock {
private boolean locked = false;
public boolean lock() {
if(!locked) {
locked = true;
return true;
}
return false;
}
}
注意事项:
以上程序在多线程中运行时,会出现相应的异常
如:线程1:运行 if(!locked)
线程2:运行 if(!locked)
线程1:运行 locked = true;
线程2:运行 locked = true;//此处发生错误,因为此时locaked已经为true
为了多线程程序更好的工作, 必须保证“check and act”是一个原子操作, 那么必须使用以下 synchronized 关键字使其为一个原子块例:
class MyLock {
private boolean locked = false;
public synchronized boolean lock() {
if(!locked) {
locked = true;
return true;
}
return false;
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


