Dies ist eine alte Version des Dokuments!


Thread, wait() und notify()

Das Beispiel zeigt einen MasterThread, welcher von seinem eigenen ChildThread nach Fertigstellung des Selbigen gewecht wird:

package com.sowas.javawiki.waitnotify;
 
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
public class MasterThread extends Thread {
   private static ExecutorService service = Executors.newCachedThreadPool();
 
   @Override
   public void run() {
      System.out.println("MasterThread startet");
      synchronized (this) {
         service.execute(new ChildThread(this));
         try {
            this.wait();
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
      }
      System.out.println("MasterThread endet");
   }
 
   public static void main(String[] args) {
      service.execute(new MasterThread());
   }
}
public class ChildThread implements Runnable {
   private MasterThread masterThread;
 
   ChildThread(MasterThread masterThread) {
      this.masterThread = masterThread;
   }
 
   @Override
   public void run() {
      try {
         System.out.println("ChildThread startet");
         // hier läuft der ChildThread...
         System.out.println("ChildThread endet");
      } finally {
         // Masterthread informieren, dass ChildThread fertig ist:
         synchronized (masterThread) {
            masterThread.notify();
         }
      }
   }
}

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007