volatile与synchronized区别

仅靠volatile不能保证线程的安全性。(原子性)
①volatile轻量级,只能修饰变量。synchronized重量级,还可修饰方法
②volatile只能保证数据的可见性,不能用来同步,因为多个线程并发访问volatile修饰的变量不会阻塞。
synchronized不仅保证可见性,而且还保证原子性,因为,只有获得了锁的线程才能进入临界区,从而保证临界区中的所有语句都全部执行。多个线程争抢synchronized锁对象时,会出现阻塞。
线程安全性
线程安全性包括两个方面,①可见性。②原子性。
从上面自增的例子中可以看出:仅仅使用volatile并不能保证线程安全性。而synchronized则可实现线程的安全性。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 591235401@qq.com

文章标题:volatile与synchronized区别

本文作者:阿杜同学

发布时间:2019-01-04, 21:47:20

最后更新:2019-01-04, 21:47:20

原始链接:http://yoursite.com/2019/01/04/volatile%E4%B8%8Esynchronized%E5%8C%BA%E5%88%AB/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录