运行多个线程的多个处理器-易失关键字Java

问题描述 投票:0回答:2

有人可以帮助我理解以下概念吗?我正在按照此处显示的链接研究Java中的Volatile关键字:https://www.geeksforgeeks.org/volatile-keyword-in-java/

[volatile似乎有意义:一个线程中所做的更改会立即反映在另一线程中

文章中的解释说:“下图显示,如果两个线程在不同的处理器上运行,那么sharedVariable的值在不同的线程中可能会不同。”

  • 我的问题是他们怎么能成为两个处理器?这些是同一CPU的一部分吗?运行应用程序或程序的计算机上是否只会安装1个处理器?

  • 并且对此进行了解释,“ volatile”关键字将如何确保“在一个线程中所做的更改立即反映在另一个线程中”

java multithreading
2个回答
1
投票

java中的处理器表示一个内核,其中的处理器中可以有n个,它们也可以是虚拟的,嗯,也可以是> 1个处理器。有一个详细的图表说明了如何使用volatile https://www.baeldung.com/java-volatile


1
投票

该文章在某种程度上毫无意义。它可以是处理器,核心,虚拟处理器...假设您有一个具有4个核心的CPU。每个内核都有自己的缓存。 Cpu可以将变量的值从主内存缓存到该缓存中。易失性使用一种指令将对该变量的任何修改写回到主内存中,而不仅是缓存中。

它也禁止指令重新排序。

© www.soinside.com 2019 - 2024. All rights reserved.