Java之voliate, synchronized, AtomicInteger使用
来源:互联网 发布:数控车削编程有趣的 编辑:程序博客网 时间:2024/05/26 09:54
1: voliate
用在多线程,同步变量。 线程为了提高效率,将成员变量(如A)某拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) ,但是不能用其来进行多线程同步控制
可以看到,运行结果:Counter.count=929(数字随机),但如果将注释掉的同步块synchronized打开,console输出则为1000
2.synchronized
它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
五、以上规则对其它对象锁同样适用.
3:AtomicInteger
使用AtomicInteger,即使不用同步块synchronized,最后的结果也是1000,可用看出AtomicInteger的作用,用原子方式更新的int值。主要用于在高并发环境下的高效程序处理。使用非阻塞算法来实现并发控制。
- Java之voliate, synchronized, AtomicInteger使用
- Java之voliate, synchronized, AtomicInteger使用
- Java之voliate, synchronized, AtomicInteger使用
- Java之voliate, synchronized, AtomicInteger使用
- Java多线程之原子性 volatile、atomicInteger、synchronized测试
- Java并发控制synchronized与AtomicInteger类
- Java基础之AtomicInteger
- 【Java多线程】AtomicInteger使用
- voliate类型使用错误
- java 学习笔记之AtomicInteger类的使用
- voliate
- 多线程之AtomicInteger的使用
- java volatile应用之 AtomicInteger
- Java线程之三 AtomicInteger
- java 并发之AtomicBoolean、AtomicInteger
- java AtomicInteger 源码之CAS
- Java中AtomicInteger的使用!!!
- java中voliate的讲解
- 系统设计概论
- 智能家居软硬件结合之手机控制电器(树莓派)
- flask蓝图的使用
- java日期获取前一天和后一天
- 小明学习Linux运维课后习题实战B
- Java之voliate, synchronized, AtomicInteger使用
- go调用动态链接库dll/so
- jquery toggle显示隐藏的时候需要点两下的解决方法
- Ubuntu环境下编译WebRTC(for android)
- JAVA设计模式之门面模式(外观模式)
- c语言 register
- PHP中把对象转数组的几个方法
- 浅析JVM 第一篇(JVM执行流程)
- Go并发编程实践