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; } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。