首页IT科技java并发大神(【Java并发入门】01 并发编程Bug的源头)

java并发大神(【Java并发入门】01 并发编程Bug的源头)

时间2025-09-19 12:52:24分类IT科技浏览5319
导读:一、根本原因...

一                、根本原因

「CPU                     、内存        、磁盘之间的速度差异」

为了能同时执行多个任务                ,CPU 发展出时间片轮转            、多核等 CPU 要从内存中读数据太慢了                     ,所以给自己设置了缓存 CPU 读磁盘更慢了        ,所以可以让该线程阻塞

二                     、直接原因

缓存导致的可见性问题

CPU 把要处理的数据加载到自己的缓存中            ,处理完了放回自己的缓存             。

另一个 CPU 同样的处理                     ,就导致可能看不到上一个 CPU 处理的结果                        。

线程切换带来的原子性问题

程序中的一行代码往往不是一条 CPU 指令        。

线程切换的时候           ,可能会在一个代码执行的中间地方切换         。

编译优化带来的有序性问题

优化会为了更高效的利用 CPU 缓存        ,将代码指令重排                       。

这个重排的过程会导致看似没问题的代码                      ,多线程出现逻辑问题            。

三           、为啥要遇到这些问题

为了提高程序的性能 引入了新方法              ,就要处理这个方法对应的问题 可以说是硬件工程师和操作系统工程师为了提高执行效率    ,给软件工程师带来的麻烦

接下来的几篇文章会介绍如何解决上面提到的「可见性        、原子性                      、有序性」的问题      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
如何在苹果电脑上使用淘宝旺旺购买商品功能(如何在苹果电脑上使用淘宝旺旺购买商品)