我继续阅读本地对象是Java中的线程安全的,如果它没有被传递给另一个线程。 有人可以解释为什么它的线程安全,因为对象不在堆栈中维护吗? 还有一个例子/模式如何有人可以将本地对象传递给另一个线程?
答案 0 :(得分:1)
如果您使用单个线程中的每个对象,那么创建一个无法保证线程安全的程序非常困难。为了在这种情况下“实现”非线程安全性,该对象必须在内部使用一些全局共享的非线程安全状态,因此不同的对象将从不同的线程访问相同的。
以上解释了为什么一般的智慧是本地对象可以使用线程安全。
答案 1 :(得分:0)
本地对象是线程安全的,因为它只能由一个线程访问。
如果你将它传递给另一个线程,例如通过队列,它不再是本地的,除非只有一个线程访问它。例如,如果发送线程不再访问它并且队列是线程安全的,那么如果只有一个线程对它有引用,则可以将对象视为线程安全。