我真的建议你在开始进入多线程的神奇世界之前,先学习一下像Sun的Java并发这样的教程。
也有许多好书出来(谷歌的“Java中的并发编程”,“Java并发实践”。
要获得答案:
在必须等待 的代码中,必须有如下内容: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
为了进一步加深您的理解:
还有其他(有时更好)方法可以完成上述操作,例如 with 等。从Java 5开始,包和子包中有很多漂亮的并发类。你真的需要在网上找到材料来了解并发性,或者得到一本好书。CountdownLatches
java.util.concurrent