Wie tötet man einen thread hat eine while(true)?

Ich versuche, zu schließen, alle meine Threads in meiner threadpool.

In der Regel versuche ich:

        while(!Thread.currentThread().isInterrupted()) {...

Schließen der while-Schleife...

Aber ich habe einen Thread, die nur aus über

        while(!Thread.currentThread().isInterrupted()) {//which is true

Dies ist, wie ich das schließen des threads:

pool.shutdownNow();

So, wie würden Sie schließen so einen Thread?

  • "&& wahr" überflüssig ist.
  • Sie müssen wissen, exit-Bedingung für diesen thread....
  • Nicht Thread.interrupt() für Sie arbeiten?
  • wenn Sie die oben genannten while-Schleifen in einer Methode der Klasse, die extends Thread verwenden, können Sie this.isInterrupted() statt Thread.currentThread().isInterrupted().
  • Hoffentlich OP nicht verlängern Thread.
  • Die Bedingung wird zu false, wenn Sie anrufen shutdownNow, weil diese Methode unterbricht die threads in der Schleife, und die Schleife wird verlassen. Nicht sicher, ob ich Ihre Frage verstehe.
  • Topolnik: Was wäre daran falsch? Ich lese mehrere tutorials über multithreading in Java, die das getan hat.
  • Es ist eine allgemein anerkannte beste Praxis. Einfach bei google nach "java erweitern Thread" zu finden, alles über Sie. Die tutorials sind offensichtlich tun Ihren Lesern einen Bärendienst.
  • Selbst die offizielle Dokumentation ist es: docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
  • Die offizielle Dokumentation ist es nicht zu empfehlen, aber zu... naja, zu dokumentieren, in diesem Fall die Tatsache, dass es in der Tat zwei Wege, um einen Einstiegspunkt für ein Thread Instanz.

InformationsquelleAutor maximus | 2012-10-29
Schreibe einen Kommentar