synchronized和volatule区别是什么?synchronized详解

KLQ 2020-07-30 09:25:59 java常见问答 7766

之前给大家介绍了synchronized和lock区别,那么下面要接着给大家介绍的就是synchronized和volatule的区别以及对synchronized的详细介绍,一起来看看吧。

1、synchronized和volatule有什么区别?

synchronized和volatule比较起来:

(1)多线程访问volatile不会发生阻塞;

synchronized会出现阻塞;

(2)关键字volatile解决的下变量在多线程之间的可见性;

synchronized解决多线程之间资源同步的问题;

(3)关键字volatile是线程同步的轻量级实现,所以的话volatile的性能是一定会比synchronized好的,并且只能修改变量;

synchronized能够修饰方法,以及代码块;

(4)volatile可以保证数据的可见性,可是,不可以保证原子性;

synchronized既能够保证原子性也能够间接的保证可见性,这是因为synchronized会将私有内存和公共内存中的数据做同步;

2、什么是synchronized?

synchronized关键字,表示这个方法加锁,也就是好比不论是哪一个线程(例如线程A),运行到这个方法的时候,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者是这个类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法之后,再运行此线程A,没有的话,锁定调用者,之后,直接运行。

synchronized有2种用法,一种是synchronized方法另外一种是synchronized块。

以上就是对于synchronized和volatule两者之间的区别介绍了,你都清楚了吗?希望上面的文章内容可以对你有所帮助哦。

你想了解更多的java常见问题及解决方法,欢迎继续来本站进行了解。

推荐阅读:

java中synchronized的用法具体怎么使用?

Synchronized和Reentrantlock区别是什么?简单叙述

synchronized和reentrantlock区别有哪些?区别一览