マルチスレッディングの魔法の世界に入る前に、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
あなたの理解を深めるために:
上記を行うには、他にも(時にはより良い)方法がありますCountdownLatches
。たとえば、Java 5などです。Java5以降、java.util.concurrent
パッケージとサブパッケージには気の利いた並行処理クラスがたくさんあります。並行性を理解したり、良い本を入手したりするには、オンラインで資料を見つける必要があります。