Java: Threads sauber beenden ohne Stop()

1.Dez.2009 18:45 Uhr, von [st], Trackback-URL


Die Verwendung von Threads kann diverse Vorteile für die Bedienung und Performance/Parallelität bieten. Viele Entwickler scheuen sich jedoch vor der Anwendung, denn Threads erfordern auch das sogenannte thread-safe programming. Gerade in den Anfängen fliegen einem daher nur so die Exceptions um die Ohren. In dem Artikel beschäftigen wir uns mit dem Thema, wie ein Thread sauber beendet wird – ohne Verwendung der Stop-Methode, welche ohnehin als deprecated deklariert ist.

Die Idee hinter diesem Verfahren ist einfach: Der Thread läuft solange, bis das Flag (bShouldStop) auf true gesetzt wird. Damit die Zugriffe sauber ablaufen, werden lesende und schreibe Zugriffe über Getter-/Setter-Methoden gekapselt. Um den gleichzeitigen lesenden und schreibenden Zugriff zu vermeiden, erhalten beide Methoden noch eine synchronized-Direktive.

Der Thread wird dann ganz normal erzeugt und gestartet:

Zum Beenden des Threads wird nachfolgender Quellcode verwendet. Im Gegensatz zur direkten Terminierung des Threads kann das genannte Verfahren dazu führen, dass der Thread nicht sofort beendet wird, sondern erst seine Arbeit sauber beendet. Das ist natürlich kein Fehler und der Vorgang sollte immer so ablaufen, als Entwickler muss man dies jedoch innerhalb des Threads berücksichtigen. D.h., dass es eventuell sinnvoll ist, zusätzliche Prüfungen innerhalb der while-Schleife auf this.isClosing() einzufügen und dies entsprechend zu behandeln.


Schlagwörter:

  • Digg
  • del.icio.us
  • Google Bookmarks
  • Add to favorites
  • MisterWong.DE
  • Technorati
  • Yigg

Partner/Werbung

Folgende News könnten dich auch interessieren:


© petanews 2006-2012, Steven Schwarznau. Alle Rechte vorbehalten.