Java并发中,如何确保代码的可见性、有序性和原子性?

2026-04-30 05:531阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2127个文字,预计阅读时间需要9分钟。

Java并发中,如何确保代码的可见性、有序性和原子性?

并发编程无关于哪种语言,都属高级篇,面试中也会被问到。想深入理解并发编程机制,并非易事,因为它涉及到计算机底层和操作系统的相关知识。

并发编程无论在哪门语言里,都属于高级篇,面试中也尝尝会被问到。想要深入理解并发编程机制确实不是一件容易的事,因为它涉及到计算机底层和操作系统的相关知识,如果对这部分知识不是很清楚可能会导致理解困难。

在这个专栏里,王子会尽量以白话和图片的方式剖析并发编程本质,希望可以让大家更容易理解。

今天我们就来谈一谈可见性、有序性和原子性都是什么东西。

并发编程的幕后

进入主题之前,我们先来了解一下并发编程的幕后。

随着CPU、内存和I/O设备的不断升级,它们之间一直存在着一个矛盾,就是速度不一致问题。CPU的速度高于内存,内存的速度又高于I/O设备。

我们写的代码中大多数内容都会经过内存处理,有些内容会去读写I/O设备,根据木桶理论,整体的性能取决于最慢的操作,就是I/O设备,所以单单提升CPU的性能是不够的。

为了最大化体现出CPU的性能,计算机底层主要做了三部分优化:

1.CPU增加了缓存,比内存速度更快,平衡内存的速度

2.操作系统增加了进程和线程,可以对CPU分时复用

3.编译程序会进行指令的重排,使缓存更好的发挥性能

我们平时的工作中其实一直都享受着这些优化后的成果,但同时他们也会导致一些很难找到原因的BUG。

什么是可见性

首先我们就来看看什么是可见性。

一个线程对共享变量的修改,另一个线程可以感知到,我们称其为可见性。

阅读全文

本文共计2127个文字,预计阅读时间需要9分钟。

Java并发中,如何确保代码的可见性、有序性和原子性?

并发编程无关于哪种语言,都属高级篇,面试中也会被问到。想深入理解并发编程机制,并非易事,因为它涉及到计算机底层和操作系统的相关知识。

并发编程无论在哪门语言里,都属于高级篇,面试中也尝尝会被问到。想要深入理解并发编程机制确实不是一件容易的事,因为它涉及到计算机底层和操作系统的相关知识,如果对这部分知识不是很清楚可能会导致理解困难。

在这个专栏里,王子会尽量以白话和图片的方式剖析并发编程本质,希望可以让大家更容易理解。

今天我们就来谈一谈可见性、有序性和原子性都是什么东西。

并发编程的幕后

进入主题之前,我们先来了解一下并发编程的幕后。

随着CPU、内存和I/O设备的不断升级,它们之间一直存在着一个矛盾,就是速度不一致问题。CPU的速度高于内存,内存的速度又高于I/O设备。

我们写的代码中大多数内容都会经过内存处理,有些内容会去读写I/O设备,根据木桶理论,整体的性能取决于最慢的操作,就是I/O设备,所以单单提升CPU的性能是不够的。

为了最大化体现出CPU的性能,计算机底层主要做了三部分优化:

1.CPU增加了缓存,比内存速度更快,平衡内存的速度

2.操作系统增加了进程和线程,可以对CPU分时复用

3.编译程序会进行指令的重排,使缓存更好的发挥性能

我们平时的工作中其实一直都享受着这些优化后的成果,但同时他们也会导致一些很难找到原因的BUG。

什么是可见性

首先我们就来看看什么是可见性。

一个线程对共享变量的修改,另一个线程可以感知到,我们称其为可见性。

阅读全文