1.CAS: Synchronized上次我们学习线程的时候 知道他可以用于线程之间的同步来实现我们的线程安全.synchronized本身就是一个互斥的一个锁 ,内置锁. Synchronized(对象){ //具体代码 } Synchronized:让代码块或则方法中的代码只能被一个线程执行.简单的理解就好像一道门,每次只允许一个人进去 当做完事情后 此人出去后 才让其他的人进来,其他人中也包括原来的那个人. 本质:就是悲观锁的思维. 提供乐观锁的方式:CAS CAS:通过硬件指令的方式实现乐观锁,以及锁的非阻塞方式来实现线程之间的同步。 1)i++; CAS之前: a.取出I b.i+1; c.i=i;三步对应的是三条指令.CAS通过硬件指令让这三条指令作为一个原子操作. 2)非阻塞 3)乐观锁
2.CAS好处 Synchronized 实现的方式当其中一个线程挂起的时候或则出现异常的情况 ,对其他的线程有影响. CAS对这个进行了改进. CAS:如何保证线程安全,我们考虑的线程安全是通过单个共享变量而言.对于复合的共享变量需要额外的同步. Volatile变量:可以保证对变量修改可以被其他的线程立马看到. 对于线程安全而言,他保证了单个变量的可见性, 通过CAS:保证了单个共享变量的原子性,对于线程安全的有序性保证. 线程安全的三大特性都保障了,那么他就是线程安全的 对于单个共享变量而言, Java代表类:AtomicLong,AtomicInteger,AtomicBoolean,AtomicRefrence.
3.CAS内存更新
A:预期的内存值 B:当前的内存值 V:旧的内存值 If(A==V){ //共享变量的值更新为B } A:就是我们执行程序后的期望的值. In t i=0; v=0; A=0; I++; //多线程 1)A线程: i, 2)B线程: i++; i=1; A期望值会被改变,比如说变成了1 A线程 i=2; If(A==v){ } |
行业聚焦 面试交流 职位推荐 开发视频 技术交流 腾讯微博 新浪微博
友情链接:课课家教育 阿里云 鲜果 W3Cfuns前端网 中国企业家 环球企业家 投资界 传媒梦工场 MSN中文网 Android开发者社区 cnbeta 投资中国网 又拍云存储 美通说传播 IT茶馆 网商在线 商业评论网 TechOrange IT时代周刊 3W创新传媒 开源中国社区 二维工坊 Iconfans 推酷 智能电视网 FreeBuf黑客与极客 财经网 DoNews 凤凰财经 新财富 eoe移动开发者社区 i黑马 网易科技 新浪科技 搜狐IT 创业家 创业邦 腾讯财经 福布斯中文网 天下网商 TechWeb 雷锋网 新浪创业 和讯科技 品途O2O 极客公园 艾瑞网 抽屉新热榜 卖家网 人民网通信频道 拉勾网 创新派 简单云主机
手机版|黑名单|守望者 成才网 在线教育 linux 高级程序设计 C/C++ 大数据
( 蜀ICP备14029946号 )
成都守望者科技有限公司 © 2013-2016 All Rights Reserved