本地对象在Java线程中如何是线程安全的?

时间:2014-08-24 12:52:43

标签: java multithreading thread-safety

我继续阅读本地对象是Java中的线程安全的,如果它没有被传递给另一个线程。 有人可以解释为什么它的线程安全,因为对象不在堆栈中维护吗? 还有一个例子/模式如何有人可以将本地对象传递给另一个线程?

2 个答案:

答案 0 :(得分:1)

如果您使用单个线程中的每个对象,那么创建一个无法保证线程安全的程序非常困难。为了在这种情况下“实现”非线程安全性,该对象必须在内部使用一些全局共享的非线程安全状态,因此不同的对象将从不同的线程访问相同的。

以上解释了为什么一般的智慧是本地对象可以使用线程安全。

答案 1 :(得分:0)

本地对象是线程安全的,因为它只能由一个线程访问。

如果你将它传递给另一个线程,例如通过队列,它不再是本地的,除非只有一个线程访问它。例如,如果发送线程不再访问它并且队列是线程安全的,那么如果只有一个线程对它有引用,则可以将对象视为线程安全。