确保java方法是线程安全的

Nim*_*sky 0 java multithreading

只使用局部变量而不使用实例变量就足够了.因此只使用堆栈上的内存(每个线程).

但是当您创建一个方法本地的新MyObject时会发生什么.是否在堆上创建了新对象?它是线程安全的,因为它的引用是本地的(线程安全)?

Chr*_*ain 5

它是线程安全的,因为如果它仅由该特定方法中的变量引用(正如您所说的那样,是一个局部变量),那么其他任何线程都不可能具有对该对象的引用,因此无法更改它.

想象一下你和我都是海盗(线程).你去把你的战利品(对象)埋在岛上(堆),保留一张地图(参考).我碰巧使用同一个岛来掩埋我的战利品,但除非你把你的地图给我,否则我会在整个岛上挖掘(Java岛上不允许),我不能乱用你的藏匿处.