【发布时间】:2011-05-07 10:27:29
【问题描述】:
我非常努力地搜索有关该问题的信息,但没有任何相关信息。 任何贡献将不胜感激。
DataStructure ds = new DataStructure();
public synchronized void run() { b(); }
private void b() { ds.update(); }
public synchronized void c() { ds.update(); }
假设上面的代码是使用线程实现的。 您可能会注意到,有一个 DataStructure 对象正在通过同步方法共享和访问,而在任何给定时间只能调用一个同步方法(我没记错。对吗?)。 是否有可能通过公共方法以不同步的方式访问 DataStructure 对象?
谢谢。
【问题讨论】:
-
你为什么不从
run()打电话给c()? -
b()只是run()应该做的一小部分,这就是设计看起来像这样的原因。 -
所以
b()!=c()?另外,你为什么不synchronize (ds),因为它实际上是你想要保护的ds? -
你的 run() 中是否有一个 while 循环?
标签: java multithreading data-structures synchronization