sleep() unterbrechen

Status
Nicht offen für weitere Antworten.

MICE

Aktives Mitglied
Ich habe ein Problem:
Ich schicke ein Thread mit sleep() 'schlafen'.
Nun will ich ihn aber gegebenfalls durch ein Tasten-Event wider aufwecken.
Wie kann ich das verwirklichen?
 
B

Beni

Gast
Ich weiss nicht, wie man "sleep" unterbrechen kann, aber man kann "wait" unterbrechen:

Code:
public static final Object LOCK = new Object();

public void run(){
  // ... macht was
  synchronized( LOCK ){
    try{
      LOCK.wait();
    }
    catch( InterruptedException ex ){}
    // ... macht was
  }
}

Und in einem anderen Thread kann man unterbrechen:
Code:
public void run(){
  synchronized( LOCK ){
    LOCK.notifiy();
  }
}

Wenn allerdings die Reihenfolge nicht stimmt... wartet der erste Thread auf ewig.

mfg Beni
 

Illuvatar

Top Contributor
API hat gesagt.:
public void interrupt()

Interrupts this thread.
First the checkAccess method of this thread is invoked, which may cause a SecurityException to be thrown.

If this thread is blocked in an invocation of the wait(), wait(long), or wait(long, int) methods of the Object class, or of the join(), join(long), join(long, int), sleep(long), or sleep(long, int), methods of this class, then its interrupt status will be cleared and it will receive an InterruptedException.

If this thread is blocked in an I/O operation upon an interruptible channel then the channel will be closed, the thread's interrupt status will be set, and the thread will receive a ClosedByInterruptException.

If this thread is blocked in a Selector then the thread's interrupt status will be set and it will return immediately from the selection operation, possibly with a non-zero value, just as if the selector's wakeup method were invoked.

If none of the previous conditions hold then this thread's interrupt status will be set.


Throws:
SecurityException - if the current thread cannot modify this thread

Das heißt, du musst den Thread, auf dem sleep ausgeführt wird, kennen, und dann dort interrupt ausführen.
sleep() bricht dann mit einer InterruptedException ab.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Thread.sleep Problem Allgemeine Java-Themen 2
B Thread.sleep() in EJB Container wie lösen? Allgemeine Java-Themen 11
mrbig2017 Sleep wird ignoriert und der Thread wartet nicht Allgemeine Java-Themen 1
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
V Thread.sleep und InterruptedException? Allgemeine Java-Themen 1
H Netbeans Warning bei Thread.sleep in Schleife Allgemeine Java-Themen 4
G Thread.sleep Allgemeine Java-Themen 12
K Threads Thread für Sleep Allgemeine Java-Themen 6
C Thread.sleep pausiert das ganze Programm Allgemeine Java-Themen 4
hdi volatile & Thread#sleep/yield - Versteh ich nich Allgemeine Java-Themen 14
P Thread.sleep() ungenau??? Allgemeine Java-Themen 10
V Enerjy und Use of Thread.sleep() Allgemeine Java-Themen 2
thE_29 Thread sleep Bug Allgemeine Java-Themen 26
Schandro Thread.sleep(0) Allgemeine Java-Themen 6
J Was ist genauer: Thread.sleep() oder meine Variante? Allgemeine Java-Themen 64
padde479 The static method sleep(long) from the type Thread should. Allgemeine Java-Themen 2
R Thread.sleep - abfragen Allgemeine Java-Themen 4
T Ersatz für Thread.sleep Allgemeine Java-Themen 8
T Frage zu Thread.sleep() Allgemeine Java-Themen 2
G Thread.currentThread().sleep() und Thread.sleep() Allgemeine Java-Themen 2
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
D While-Schleife - if Zweig unterbrechen Allgemeine Java-Themen 1
E Gewollte Endlosschleife unterbrechen oder Alternative gesucht Allgemeine Java-Themen 2
L Methode in Thread mit langer Laufzeit unterbrechen (ANT executeTarget) Allgemeine Java-Themen 4
X Codeabarbeitung innerhalb des Hauptprogramms für bestimmte Zeit unterbrechen Allgemeine Java-Themen 2
L Thread kurz unterbrechen und wieder starten Allgemeine Java-Themen 5
R Threads unterbrechen Allgemeine Java-Themen 9
V wie bufferedreader.readline() unterbrechen? Allgemeine Java-Themen 4
G Thread lässt sich mit interrupt() nicht unterbrechen Allgemeine Java-Themen 6
O while - Schleife unterbrechen mit break; Allgemeine Java-Themen 5
S Threads unterbrechen Allgemeine Java-Themen 5
J Simpler Thread lässt sich NIE über interrupt() unterbrechen Allgemeine Java-Themen 8
G methode unterbrechen Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben