synchronized
synchronized可以修饰方法和代码块
多线程在执行synchronized方法时线程会阻塞
synchronized可以保证线程的原子性
volatile
volatile的性能比synchronized要高
volatile只能修饰变量
多线程访问volatile时线程不会阻塞
volatile不能保证线程的原子性
线程原子性是指不能在被拆分的操作。在说的直白点就是我们知道线程在执行时是需要一个前提条件的那就是需要获取到系统CPU的执行资格,虽然线程获取到了执行资格但CPU也可以随时切换,不管线程是否执行完毕。线程原子性就是说如果线程已经获取到了CPU的执行资格,如果线程在没有执行完时,任何线程是不能够中断的。
下面的事例我们演示一下volatile关键字为什么不支持线程原子性。
我们看结果显示Thread-58和线程Thread-63输出count都是10000。这显然是不正确的。原因就是volatile关键字是不支持原子性也不支持同步性的。如果我们把count()方法添加synchronized关键字,那输出结果就是线程安全的了。
我们看结果上述的代码就是线程安全的了。这就是synchronized关键字和volatile关键字的区别。
文章转载自吉林乌拉,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1354次阅读
2025-03-13 11:40:53
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
479次阅读
2025-03-13 14:38:19
AI的优化能力,取决于你问问题的能力!
潇湘秦
458次阅读
2025-03-11 11:18:22
2025年3月国产数据库大事记
墨天轮编辑部
358次阅读
2025-04-03 15:21:16
优炫数据库成功应用于国家电投集团青海海南州新能源电厂!
优炫软件
351次阅读
2025-03-21 10:34:08
国产化+性能王炸!这套国产方案让 3.5T 数据 5 小时“无感搬家”
YMatrix
304次阅读
2025-03-13 09:51:26
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
303次阅读
2025-04-01 20:42:12
一键装库脚本3分钟极速部署,传统耗时砍掉95%!
IT邦德
257次阅读
2025-03-10 07:58:44
GoldenDB数据库社区正式上线!期待与您共享新知
GoldenDB分布式数据库
249次阅读
2025-03-12 14:06:39
Navicat 17.2 正式发布 | AI 助手、支持 Snowflake...超多新功能等你解锁
Navicat
214次阅读
2025-03-14 14:13:33