Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Thread pausieren
Gehe zu Seite Zurück  1, 2
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Thread pausieren
 
Autor Nachricht
perle
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 20.05.2005
Beiträge: 117

BeitragVerfasst am: 07 Jan 2009 - 21:47:13    Titel:

So in etwa? Ich hab in der MEthode pauseSimulation auf PAUSE gesetzt, weiß dann aber nciht genau was ich machen muss. den Thread starten über myThread.start()?
Und in methode startSimulation() hab ich myThread.notify() eingefügt.
Un in meiner run-Methode die while-Schleife.
Code:


public void startSimulation() throws RemoteException, Exception {
      switch(simState){
      case IDLE:
         init();
         simState=RUNNING;
         startThread();
         break;
      case PAUSE:
         simState=RUNNING;
         myThread.notify();
         break;
      default:
         throw (RuntimeException);
      }   
   }

public void pauseSimulation() throws RemoteException, Exception {
      switch(simState){
      case RUNNING:
         simState=PAUSE;
         myThread.start();
         break;
      default:
         throw (RuntimeException);
      }
   }

public void stopSimulation() throws RemoteException, Exception {
...
myThread.join();
myThread.isAlive();
myThread=null;
...

}

private void startThread(){
myThread = new Thread(this);
myThread.start();

}
public void run() {

while (simState==RUNNING||simState==PAUSE) {
while(simState==PAUSE){
                          try {
               wait();
            } catch (InterruptedException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
         }

frameTime = System.currentTimeMillis();
updatePosition(frameTime);

long difTime = System.currentTimeMillis() - frameTime;
try {
Thread.sleep(difTime < 33 ? (33 - difTime) : 0);
} catch (InterruptedException e) {
e.printStackTrace();
}


Zuletzt bearbeitet von perle am 07 Jan 2009 - 22:03:46, insgesamt einmal bearbeitet
Argi
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.02.2007
Beiträge: 1402

BeitragVerfasst am: 07 Jan 2009 - 21:53:37    Titel:

Klick in dem Beitrag mit dem Code mal auf 'Edit', markier den Quellcode mit der Maus und klick dann oben auf das Feld 'Code'. Das erhöht die Lesbarkeit ungemein.

Wenn die Formatierung des Quellcodes durch das erste Abspeichern schon verloren sein sollte, kopier ihn einfach noch einmal aus deinem Editor rein.
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 07 Jan 2009 - 21:55:15    Titel:

Du kannst start() nur genau einmal für jeden Thread aufrufen. Entsprechend wird das so nicht funktionieren. Bei pause darf start also schon mal nicht aufgerufen werden. Daneben sollte start prüfen, ob der Thread schon gestartet wurde (dürft man am Zustand sehen können) oder ob er pausiert wurde (== PAUSED). Wenn das der Fall ist, ist notify dein Freund.
perle
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 20.05.2005
Beiträge: 117

BeitragVerfasst am: 07 Jan 2009 - 22:24:38    Titel:

muss ich also in meiner pause methode myThread.start() einfach entfernen und das wars?
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Thread pausieren
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum