【发布时间】:2015-09-18 11:40:46
【问题描述】:
以下是JCIP的摘录
作者说,为了使上面的代码线程安全,我们必须使用客户端锁定。
为了使这种方法有效,我们必须使用与 List 相同的锁,即使用客户端锁定或外部锁定。客户端锁定需要保护使用某个对象 X 的客户端代码以及 X 用来保护其自身状态的锁。为了使用客户端锁定,您必须知道 X 使用什么锁。
为什么我们不能一开始就简单地将 List 对象设为私有以使 ListHelper 类线程安全?
【问题讨论】:
-
好点,这就是为什么你应该封装对内部状态的访问,特别是当它应该是线程安全的时候。尽管您仍然可以通过反射和其他东西访问它,但这是一个不同的主题。
标签: java multithreading