深入理解CAS算法原理,其在JDK中的运用究竟有何独到之处?
- 内容介绍
- 相关推荐
本文共计1789个文字,预计阅读时间需要8分钟。
1. 什么是CAS?CAS:Compare and Swap,即比较并交换。它是一种无锁算法,用于在多线程环境中实现变量操作的原子性。
2. CAS在JDK5中的应用JDK5增加了并发包java.util.concurrent.*,其中包含了许多使用CAS算法实现的类。这些类实现了对共享资源的乐观锁操作,区别于synchronized同步锁。
3. JDK5之前Java语言在JDK5之前,Java语言主要依赖于synchronized关键字来实现线程同步。synchronized是一种悲观锁,它假设在程序执行过程中,共享资源可能会被多个线程同时访问,因此需要加锁以保证操作的原子性。
1、什么是CAS?
CAS:Compare and Swap,即比较再交换。
jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁。
2、CAS算法理解
对CAS的理解,CAS是一种无锁算法,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。
CAS比较与交换的伪代码可以表示为:
do{ 备份旧数据; 基于旧数据构造新数据; }while(!CAS( 内存地址,备份的旧数据,新数据 ))
注:t1,t2线程是同时更新同一变量56的值
因为t1和t2线程都同时去访问同一变量56,所以他们会把主内存的值完全拷贝一份到自己的工作内存空间,所以t1和t2线程的预期值都为56。
本文共计1789个文字,预计阅读时间需要8分钟。
1. 什么是CAS?CAS:Compare and Swap,即比较并交换。它是一种无锁算法,用于在多线程环境中实现变量操作的原子性。
2. CAS在JDK5中的应用JDK5增加了并发包java.util.concurrent.*,其中包含了许多使用CAS算法实现的类。这些类实现了对共享资源的乐观锁操作,区别于synchronized同步锁。
3. JDK5之前Java语言在JDK5之前,Java语言主要依赖于synchronized关键字来实现线程同步。synchronized是一种悲观锁,它假设在程序执行过程中,共享资源可能会被多个线程同时访问,因此需要加锁以保证操作的原子性。
1、什么是CAS?
CAS:Compare and Swap,即比较再交换。
jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁。
2、CAS算法理解
对CAS的理解,CAS是一种无锁算法,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。
CAS比较与交换的伪代码可以表示为:
do{ 备份旧数据; 基于旧数据构造新数据; }while(!CAS( 内存地址,备份的旧数据,新数据 ))
注:t1,t2线程是同时更新同一变量56的值
因为t1和t2线程都同时去访问同一变量56,所以他们会把主内存的值完全拷贝一份到自己的工作内存空间,所以t1和t2线程的预期值都为56。

