Java多线程.CAS

Java多线程.CAS,第1张

CAS有3个 *** 作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。

这些方法类似compareAndSwapXXX,这些 *** 作是一个原子 *** 作,也就是说cpu在执行cas时对这一块内存是独占排他的。在并发包中很多 *** 作真正执行的也是cas,并发包中的类并发性能比使用 synchronized 关键字好也在于此:锁的粒度小了许多并且少了线程上下文切换。

C++源码分享:

compareAndSwapObject (jobject obj, jlong offset,jobject expect, jobject update)
{
  jobject *addr = (jobject*)((char *) obj + offset);
  return compareAndSwap (addr, expect, update);
}

 系列内容:

Java多线程.线程状态

Java多线程.Volatile,transient,Monitor,goto

Java多线程.Unsafe

Java多线程.三种实现方式

Java多线程.ReentrantLock

Java多线程.Synchronized

Java多线程.LockSupport

Java多线程.线程检测

Java多线程.CAS

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/707512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-24
下一篇 2022-04-24

发表评论

登录后才能评论

评论列表(0条)

保存