我知道原始局部变量是线程安全的,因为它们是在堆栈中分配的,并且对于每个线程都是唯一的。
对象变量怎么样?它们是否在本地范围内是线程安全的。
我有以下伪代码:
private void myMethod(int myInt) {
final Map<String, Object> myMap = new HashMap<>();
// Put some values into map.
...
// Get some values from map.
}
在这种情况下,我需要将HashMap更改为ConcurrentHashMap还是已经是线程安全的?
答案 0 :(得分:0)
只要任何其他线程不读取或写入此变量,您就不必担心。 当一个线程正在写入而第二个正在读取变量时需要同步。如果没有同步,则读取线程可以看到陈旧值。
Java并发是一个非常广泛的主题,没有像读书这样的背景就很难学习它。我在本主题中最喜欢的书是:&#34;实践中的Java并发&#34;,我建议你先阅读它,然后回到这里询问你是否会有更多的问题。