Java - Allgemein

Einen Thread pausieren

java.lang.Threads
Es gibt die Möglichkeit einen Thread mit Thread.suspend() und Thread.resume() zu pausieren. Diese Methoden sind aber aus gutem Grund veraltet. Intensive Nutzung kann zu einem deadlock führen.



Die bessere Methode ist es, den Thread auf folgenden Art zu pausieren:

MyThread thread = new MyThread();
thread.start();
 
while (true) {
   // Hier kann Code stehen der abgearbeitet wird währen der Thread läuft...
 
   // Jetzt wird der Thread pausiert:
   synchronized (thread) {
      thread.pause();
   }
 
   // Hier kann Code stehen der abgearbeitet wird während der Thread pausiert...
 
   // Resume the thread
   synchronized (thread) {
      thread.proceed();
   }
 
   // Hier kann Code stehen der abgearbeitet wird während der Thread wieder läuft...
}
 
class MyThread extends Thread {
   boolean fPause = false;
 
   public void run() {
      while (true) {
         // Irgendwelcher Code...
 
         // Überprüfen, ob pausieren angesagt ist:
         synchronized (this) {
            while (fPause) {
               try {
                  wait();
               } catch (Exception e) {
                  e.printStackTrace();
               }
            }
         }
 
         // Irgendwelcher Code...
       }
   }
 
   public void pause() {
      fPause = true;
   }
 
   public void proceed() {
      fPause = false;
      notify();
   }
}


FotoStackerFotoStacker, Fotos für Ihre Website


Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007