只使用局部变量而不使用实例变量是否足够?因此仅使用堆栈上的内存(每个线程)。
但是当您创建该方法本地的新 MyObject 时会发生什么。新对象不是在堆上创建的吗?它是线程安全的,因为对它的引用是本地的(线程安全的)?
最佳答案
它是线程安全的,因为如果它仅被该特定方法中的变量引用(正如您所说,它是一个局部变量),那么其他线程就不可能拥有对该对象的引用,因此无法更改它.
想象你和我是海盗(线程)。你去把你的战利品(物体)埋在一个岛上(堆)上,并保留一张 map (引用)。我碰巧用同一个岛来埋我的战利品,但除非你给我你的 map ,或者我去整个岛上挖掘( java 上不允许),否则我不能乱动你的藏品。
关于java - 确保java方法是线程安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214154/