一、volatile
修饰共享变量,保证变量的可见性和有序性,不保证原子性
保证可见性
线程A在工作内存中修改的共享属性值会立即刷新到主存,线程B/C/D每次通过读写栅栏来达到类似于直接从主存中读取属性值
保证有序性
重排序时,以volatile修饰属性的读/写操作代码行为分界线,读/写操作前面的代码不许排序到后面,后面同理不许排序到前面。由此保证有序性
不保证原子性
如果volatile修饰的属性若在修改前已读取了值,那么修改后,无法改变已经复制到工作内存的值
二、Synchronized
保证同一时刻最多只有1个线程执行 被Synchronized修饰的方法 / 代码
对象锁
作用于对像的方法或代码块
类锁
作用于静态方法或静态代码块
网友评论