synchronize原理以及和CAS的浅层比较
1.为什么需要synchronize
我自己的理解(问题):当多个线程对同一个对象M进行操作的时候,如果是非原子性对象(比如a++这样的,要分好几个指令来走),A线程处理该对象M的时候,很可能会出现在执行完某个指令之后,因为被分配到cpu时间片段用完了,只能等待再次被分配时间片段,而这时,其他线程(线程B)对该对象进行了操作,导致对象M的值不一样了,之后由于A线程被分配到了时间片段,所以可以继续执行未处理完的指令,但是它很傻,不会在处理前看看对象M是否已经变了,而是继续按照之前拿到值进行操作。
我自己的理解(处理):两种方式 ①在对象M上加一个判断,使得线程A在处理该数据的时候,会去拿最新的值与原值进行比较,如果没有人动过,那就继续完成其它指令。
②加上一个保护,我没有完成一系列的指令前,谁都不能动,直到我完成了相关指令,其它线程才能对其进行处理。这样可以保证其原子性。
我自己的理解(具体实现):①咱们可以用CAS(compare and swap)来进行
//声明
private static AtomicInteger count=new AtomicInteger(0);
//使用 自增
cout.incrementAndGet();
//使用 自减
cout.decrementAndGet();
②可以用synchronize来实现原子性
//想要哪一快保持原子性,就把那一块用中括号括起来
synchronized(this){a++
}
//静态方法需要的是类锁,所以需要.class对象的锁
synchronized(b.class){
a++
}
当然也可以用lock来锁,这个是程序员自己整的,也能保持原子性,但是呢,要注意不能加上try语块,免得出现异常,出现了死锁
//声明一把可重入锁
private ReentrantLock lock=new ReentrantLock();
//上锁
lock.lock();
try{
a++
}finally{
//释放锁
lock.unlock;
}
synchronize原理以及和CAS的浅层比较相关推荐
- 浅层砂过滤器的原理是什么,滤料是什么,需要不需要定期?
浅层砂过滤器的原理是什么,滤料是什么,需要不需要定期 浅层砂过滤器的原理是什么? 高效连续过滤器的运行可分为原水过滤和滤料清洗,再进行两个相对独立又同时进行的过程.二者在同一个过滤器的不同位置完成,前 ...
- 浅层砂过滤器的工作原理
浅层砂过滤器的工作原理: 浅层砂过滤器,由若干个过滤单元并列组合而成.当系统处于过滤状态时,未经过滤的水通过布水器均匀布水,水以层流状态通过滤器内的填料层.当水流过填料层时,杂质被截留在填料层内.过滤 ...
- Tensorflow MNIST浅层神经网络的解释和答复
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51416540 看到之前的一篇博文:深入 ...
- 深度学习(二十二)Dropout浅层理解
Dropout浅层理解 原文地址:http://blog.csdn.net/hjimce/article/details/50413257 作者:hjimce 一.相关工作 本来今天是要搞<Ma ...
- 温州大学《深度学习》课程课件(四、浅层神经网络)
这学期我上的另一门课是本科生的<深度学习>,主要用的是吴恩达老师的<深度学习>视频课的内容. 本章内容见"授课计划"的标红部分 使用教材:吴恩达<深度 ...
- 温州大学《深度学习》课程课件(三、浅层神经网络)
这学期我上的另一门课是本科生的<深度学习>,主要用的是吴恩达老师的<深度学习>视频课的内容. 使用教材:吴恩达<深度学习>课程笔记 课外参考书:<深度学习&g ...
- 深度学习(二十二)Dropout浅层理解与实现
Dropout浅层理解与实现 原文地址:http://blog.csdn.net/hjimce/article/details/50413257 作者:hjimce 一.相关工作 本来今天是要搞< ...
- 工业循环水浅层砂过滤器(励进浅层介质过滤器)介绍及现场案例图
工业循环水浅层砂过滤器(励进浅层介质过滤器)介绍及现场案例图 浅层砂过滤器(浅层介质过滤器)是由多个标准高速砂缸单元组成,其内部设有D特的布水器和集水器,拥有的双向自动冲洗阀,可实现在正常系统运行中多 ...
- 全自动浅层过滤器的后期维护
全自动浅层砂过滤器概述 浅层砂过滤器,别名全自动浅层砂过滤器,系统是由多个标准高速砂缸单元组成,其内部设有布水器和集水器,拥有双向自动冲洗阀,可实现在正常系统运行中多个标准高速砂缸逐个单独的反冲洗,全 ...
- 深度学习入门笔记(六):浅层神经网络
专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分 ...
最新文章
- HP-UX Root密码被锁定的非关机情况下解决方案
- Cocoapods安装过程【转载】
- Asp.net在线压缩和解压缩简单实现(附项目源码)
- 精准扶贫谋定产业化-农业大健康·万祥军:东平农业品牌化
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建
- bat执行clsss
- 程序员撕开京东 618 大促压测的另一面 | 原力计划
- .NET平台常用的框架整理
- linux sftp 增加用户(centos)
- vector容器易错知识点集锦
- 3dmax疯狂模渲大师软件有什么使用指南?疯狂模渲大师的目录,教你怎么使用疯狂模渲大师,疯狂模渲大师其实并不难!
- 射击类游戏html代码,超简单射击游戏
- 如何制作WIFI二维码,实现手机扫一扫快速连接
- [大数据、Hadoop、数据采集、MySQL、计算机基础、Windows、练习题库、面试]
- 腾讯云点播视频存储(Web端视频上传)
- 影音视频领域开源项目专区
- ECCV2020 Flow-edge Guided Video Completion20论文翻译
- 树莓派连接人体感应模块HC-SR501
- 使用ffmpeg 合并音频视频
- CBOW模型详解(基于one-hot)