java - 确保java方法是线程安全的

标签 java multithreading

只使用局部变量而不使用实例变量是否足够?因此仅使用堆栈上的内存(每个线程)。

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

最佳答案

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

想象你和我是海盗(线程)。你去把你的战利品(物体)埋在一个岛上(堆)上,并保留一张 map (引用)。我碰巧用同一个岛来埋我的战利品,但除非你给我你的 map ,或者我去整个岛上挖掘( java 上不允许),否则我不能乱动你的藏品。

关于java - 确保java方法是线程安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214154/

相关文章:

java - 如何操作 .doc 文件

java - 如何在 Java GUI 中的每个 TreeSelectionEvent 上刷新 JTable?

objective-c - 在主线程或后台线程上进行iOS XML解析

java - 警告 : No mapping found for HTTP request with URI spring framework

java - Box2d 仅与一个物体发生碰撞

java - 阻止应用程序的所有其他输入并通过 Java 包装器对其进行控制

c# - 异步等待新线程的行为

c# - 从线程中获取线程 ID

c - 特定线程数的 OpenMP 急剧减速

multithreading - Web 浏览器是否对打开的选项卡使用不同的端口号?