千家信息网

synchronized和volatile关键字的区别是什么

发表于:2025-01-29 作者:千家信息网编辑
千家信息网最后更新 2025年01月29日,synchronized和volatile关键字的区别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。synchro
千家信息网最后更新 2025年01月29日synchronized和volatile关键字的区别是什么

synchronized和volatile关键字的区别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

synchronized

  • synchronized可以修饰方法和代码块

  • 多线程在执行synchronized方法时线程会阻塞

  • synchronized可以保证线程的原子性

volatile

  • volatile的性能比synchronized要高

  • volatile只能修饰变量

  • 多线程访问volatile时线程不会阻塞

  • volatile不能保证线程的原子性

线程原子性是指不能在被拆分的操作。在说的直白点就是我们知道线程在执行时是需要一个前提条件的那就是需要获取到系统CPU的执行资格,虽然线程获取到了执行资格但CPU也可以随时切换,不管线程是否执行完毕。线程原子性就是说如果线程已经获取到了CPU的执行资格,如果线程在没有执行完时,任何线程是不能够中断的。

下面的事例我们演示一下volatile关键字为什么不支持线程原子性。

我们看结果显示Thread-58和线程Thread-63输出count都是10000。这显然是不正确的。原因就是volatile关键字是不支持原子性也不支持同步性的。如果我们把count()方法添加synchronized关键字,那输出结果就是线程安全的了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

线程 原子 就是 关键 关键字 支持 方法 资格 结果 保证 帮助 输出 阻塞 清楚 直白 安全 事例 代码 内容 前提 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 从用户角度看网络安全 信誉可靠的软件开发外包 软件开发 技术标准 安卓手机怎么做文件服务器 服务器里面自带阵列功能吗 丰台区信息网络技术推广诚信服务 自学学设计的app软件开发 数据库审计系统立项报告 服务器如何做磁盘阵列 改IP软件开发 党员教育数据库上线时间 长城汽车软件开发难吗 山西程序软件开发服务介绍 学校信息和网络安全调研报告 河北开源软件开发诚信企业推荐 朝阳品牌服务器回收报价 台州网络安全平台教育平台 生死狙击其他服务器活动 阿里云服务器怎么搭建 怎么做模拟飞行服务器 软件开发合同分四年付款模板 网络安全属于哪一类一级学科 上海网络安全博览会赞助 软件开发代码设计过程 网络安全防护分几级 网络安全变局 成都的网络安全峰会 数据库表结构说明文档下载 系统软件开发报价书 丽锦网络技术有限公司
0