Je voudrais vraiment vous recommandons de passer par un tutoriel comme Java de Sun Simultanéité avant de commencer dans le monde magique de multithreading.
Il y a également un certain nombre de bons livres (google pour "Programmation Concurrente en Java", "la Java de la Simultanéité dans la Pratique".
Pour accéder à votre réponse:
Dans votre code qui doit attendre l' dbThread
, vous devez avoir quelque chose comme ceci:
//do some work
synchronized(objectYouNeedToLockOn){
while (!dbThread.isReady()){
objectYouNeedToLockOn.wait();
}
}
//continue with work after dbThread is ready
Dans votre dbThread
s'méthode, vous aurez besoin de faire quelque chose comme ceci:
//do db work
synchronized(objectYouNeedToLockOn){
//set ready flag to true (so isReady returns true)
ready = true;
objectYouNeedToLockOn.notifyAll();
}
//end thread run method here
L' objectYouNeedToLockOn
je suis à l'aide de ces exemples est de préférence de l'objet que vous avez besoin de manipuler simultanément à partir de chaque thread, ou vous pouvez créer un distinct Object
(je ne recommanderais pas faire les méthodes elles-mêmes synchronisé):
private final Object lock = new Object();
//now use lock in your synchronized blocks
Pour approfondir vos connaissances:
Il y a d'autres (parfois mieux) façons de le faire ci-dessus, par ex. avec de l' CountdownLatches
, etc. Depuis Java 5, il y a beaucoup de chouettes simultanéité des classes dans l' java.util.concurrent
forfait et sous-packages. Vous avez vraiment besoin de trouver des documents en ligne pour connaître la simultanéité, ou d'obtenir un bon livre.