volatile和synchronized有什么区别?
1、volatie本质是在告诉jvm当前变量在工作内存中的值是不确定的,需要从主内存中读取。
synchronized则是锁定当前变量,只有当前线程可以访问,其他线程阻塞
2、volatile只能用在变量上,syn可以用在变量、方法、类上
3、volatie只能保证可见性,不能保证原子性,syn都可以。
1、volatie本质是在告诉jvm当前变量在工作内存中的值是不确定的,需要从主内存中读取。
synchronized则是锁定当前变量,只有当前线程可以访问,其他线程阻塞
2、volatile只能用在变量上,syn可以用在变量、方法、类上
3、volatie只能保证可见性,不能保证原子性,syn都可以。