之前给大家介绍了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常见问题及解决方法,欢迎继续来本站进行了解。
推荐阅读: