JAVA多线程同步:volatile,synchronized,Atomic... 比较
来源:互联网 发布:澳门网络博客公司顶级 编辑:程序博客网 时间:2024/05/18 20:32
1.
Atomic..系列的对象属于
java.util.concurrent.atomic包
在多线程程序中,能保证对该对象的操作的原子性,常用在需要做递增、递减操作的变量,如计数器。
2.
volatile
能保证所修饰的变量的在并发状态下的可见性,但无法保证原子性。
ps:
可见性是指,多个线程之间,总能看到变量的最新值。
原子性是,针对变量的读--改--写操作
只有当所修饰的变量满足如下条件时,才能用volatile做线程同步:
1. 对变量的写入操作不依赖于当前值。
2. 变量不会跟其他状态变量一起纳入不变性条件中。
即: —— 变量真正独立于其他变量和自己以前的值 ——
3.
synchronized
既能保证可见性,又能保证原子性。
不过程序性能开销较大,另外,synchronized修饰方法,或者程序块。
修饰方法时,被修饰的对象为(this),整个方法体都在同步范围内。
修饰代码块时,必须要提供被同步的对象,并且不能为基本数据类型,但是volatile修饰的可以是基本数据类型。
0 0
- JAVA多线程同步:volatile,synchronized,Atomic... 比较
- java多线程 synchronized volatile Atomic LOCK的使用
- Java——多线程总结、ThreadLocal/Volatile/synchronized/Atomic关键字
- 【Java多线程】-线程同步synchronized和volatile
- 使用synchronized和volatile实现Java多线程同步
- Java多线程(二):线程同步synchronized和volatile
- volatile,Atomic ,synchronized性能和同步测试程序
- Java 多线程之 synchronized 和 volatile 的比较
- Java多线程之synchronized和volatile的比较
- JAVA多线程之volatile 与 synchronized 的比较
- JAVA多线程之volatile 与 synchronized 的比较
- JAVA多线程之volatile 与 synchronized 的比较
- Java 多线程之 synchronized 和 volatile 的比较
- java多线程编程-volatile与synchronized之前的比较
- 多线程的相关关键词理解 volatile,atomic,synchronized,lock
- Java多线程的Atomic 和 Volatile
- Java多线程volatile和synchronized
- java Synchronized 多线程同步
- POJ1050 简单的递推~
- Leetcode 118. Pascal's Triangle
- Cocoapods降低版本及卸载
- UML基础知识入门
- Implement Queue using Stacks
- JAVA多线程同步:volatile,synchronized,Atomic... 比较
- Linux网络编程
- JavaWeb开发入门(一)
- hadoop中exmaple运行参数分析
- UVa11582 巨大的斐波那契数列
- 栈和堆的区别
- C++中引用和指针的区别
- MyBatis 学习总结---理论化知识点(一)
- MQTT(使用mosquitto做broker)做Android推送部分总结