Java并发编程之CAS

java-教程王 Java教程 发布时间:2021-10-18 17:40:27 阅读数:16702 1

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;
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202110/1495.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者