Java中的本地对象变量线程安全

时间:2017-07-05 06:23:25

标签: java multithreading concurrency thread-safety

我知道原始局部变量是线程安全的,因为它们是在堆栈中分配的,并且对于每个线程都是唯一的。

对象变量怎么样?它们是否在本地范围内是线程安全的。

我有以下伪代码:

private void myMethod(int myInt) {

    final Map<String, Object> myMap = new HashMap<>();

    // Put some values into map.
    ...
    // Get some values from map.   
}

在这种情况下,我需要将HashMap更改为ConcurrentHashMap还是已经是线程安全的?

1 个答案:

答案 0 :(得分:0)

只要任何其他线程不读取或写入此变量,您就不必担心。 当一个线程正在写入而第二个正在读取变量时需要同步。如果没有同步,则读取线程可以看到陈旧值。

Java并发是一个非常广泛的主题,没有像读书这样的背景就很难学习它。我在本主题中最喜欢的书是:&#34;实践中的Java并发&#34;,我建议你先阅读它,然后回到这里询问你是否会有更多的问题。