【发布时间】:2014-03-31 11:02:34
【问题描述】:
我想同步通过 ExecutorService 调用的 3 个线程。如何确保它们在同一个对象上同步?
现在我有这个代码:
class Test {
executor.submit(new Request(threadNames[i]));
executor.submit(new Request(threadNames[i]));
executor.submit(new Request(threadNames[i]));
private class Request implements Callable {
@Override
public Long call() throws InterruptedException {
if (threadName.equals("SOMETHING") {
doSomething();
} else {
doSomeOtherThing();
}
}
}
private synchronized void doSomething() {
}
private synchronized void doSomeOtherThing() {
}
...
}
其中一个线程负责生成一个条件,而另外两个则对其进行操作。
【问题讨论】:
-
用于同步
doSomething和doSomeOtherThing的锁将在Test的实例上创建Request。很难准确判断发生了什么,因为您的代码不完整,并且无法以当前形式运行 -executor调用在Test类中的显示位置没有意义
标签: java multithreading monitor synchronized