我真的建议你经历一个教程,如
Sun’s Java Concurrency,你开始在多线程的魔法世界。
还有一些好书出来了(google for“Concurrent Programming in Java”,“Java Concurrency in Practice”)。
要得到你的答案:
在你必须等待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我在这些例子中使用的最好是需要从每个线程并发操作的对象,或者您可以为此目的创建一个单独的对象(我不建议使方法本身同步):
private final Object lock = new Object();
//now use lock in your synchronized blocks
为了进一步了解:有其他(有时更好的)方法来做上述,例如。与CountdownLatches等。从Java 5开始,在java.util.concurrent包和子包中有很多漂亮的并发类。你真的需要在线找到材料来了解并发,或者得到一本好书。