多线程 - 如何在不使用volatile关键字的情况下初始化变量

时间:2017-02-17 18:51:13

标签: java multithreading volatile

我正在使用java创建一个游戏,并且我创建了一个线程来初始化一个初始化其他类的类等。在我这样做并且线程不活动之后,我的主线程访问我初始化的类并调用使用另一个线程初始化的变量的方法,然后调用另一个类的方法,该方法具有由另一个线程初始化的变量等。

我的问题是,如果我想使用一组不同类中的单独线程来初始化大量变量,我是否需要创建我初始化volatile的所有变量,或者是否有更好的方法以便所有我使用那个线程初始化的变量可以被其他线程自动访问。

这个问题不是我应该使用volatile关键字更多还是a,如果我不使用volatile关键字,并且有更好的选择让我的很多变量变得不稳定。

此外,如果它有帮助,我的程序有一个面向对象的结构。

1 个答案:

答案 0 :(得分:0)

我认为您对使用volatile关键字感到困惑。您不能使用volatile关键字使变量对其他线程可见。 volatile用于建立对变量的写入与该变量的后续读取之间的先发生关系。这是通过在每次读取时强制从主存储器读取变量而不是允许从CPU缓存中读取变量来实现的。

您不需要做任何特别的事情来使对象或对象的元素对其他线程可见。