Java同步困境

时间:2016-02-14 04:58:16

标签: java concurrency

假设我有4个对象,A,B,C和D.

  • A上的所有方法都是同步的。
  • B,C和D上没有方法同步。
  • B仅由A
  • 访问
  • A由A和B访问
  • D仅由B
  • 加入

A上的方法可以同时从不同的线程调用。给定的场景是线程安全的吗?也就是说,对所有线程都可以看到对B,C和D的读写操作吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

因此所有访问都从A的同步方法开始,A,B,C和D的所有读写都在锁定A时完成。然后是的,这将使这种安排成为线程安全的(就内存访问而言)关注,不能谈论业务逻辑。)

注意:你说“对象”,而不是“类”,所以我认为这就是你的意思。例如,如果您有多个B实例,并且这些实例在A的多个实例之间共享,那么这可能不再是线程安全的。线程访问的对象树必须与它们持有的锁相匹配。