我真的建议您阅读Sun的Java Concurrency之类的教程。在进入神奇的多线程世界之前,先。
也有许多不错的书(有关“ Java并行编程”,“ Java并发实践”的Google书籍)。
为了得到你的答案:
在必须等待的代码中dbThread
,您必须具有以下内容:
//do some work
synchronized(objectYouNeedToLockOn){
while (!dbThread.isReady()){
objectYouNeedToLockOn.wait();
}
}
//continue with work after dbThread is ready
在您dbThread
的方法中,您需要执行以下操作:
//do db work
synchronized(objectYouNeedToLockOn){
//set ready flag to true (so isReady returns true)
ready = true;
objectYouNeedToLockOn.notifyAll();
}
//end thread run method here
objectYouNeedToLockOn
在这些示例中,我正在使用的对象最好是您需要从每个线程并发操作的对象,或者您可以Object
为此目的创建一个单独的对象(我不建议使方法本身同步):
private final Object lock = new Object();
//now use lock in your synchronized blocks
进一步理解:
还有其他(有时更好)的方法来执行上述操作,例如使用CountdownLatches
,等等。由于Java 5,java.util.concurrent
程序包和子程序包中有许多漂亮的并发类。您确实需要在线查找资料以了解并发性,或获得一本好书。