2021-10-13

多线程知识点(3)

volatile作用
volatile可以保证内存可见性且禁止重排序

可以强制线程从公共内存中读取变量的值,而不是从工作内存中读取。

volatile 与 synchronized比较
1)volatile 关键字是线程同步的轻量级实现,所以volatile性能比synchronized更好,volatile只能修饰变量,而synchronized可以修饰方法,代码块。随着JDK新版本的发布,synchronized的执行效率也有了很大的提升。

在开发中我们使用synchronized的比例较大。

2)多线程访问volatile变量不会发生阻塞,而synchronized可能会阻塞。

3)volatile能保证数据的可见性,不能保证原子性。synchronized都可以保证,会数据同步。

4)volatile解决的是变量在多个线程之间的可见性;synchronized解决多个线程之间访问公共资源的同步性。

volatile 非原子特性
volatile 关键字增加了实例变量在多个线程之间的可见性,但是不具备原子性。

上一篇:swift语言学习之UITableView分割线左边到头的解决


下一篇:volatile关键字分析