Ich habe einen Thread, der eine Verbindung Pool-Verbindung verwendet und führt Abfrage für die DB, die für ca. 1 min läuft. vor 1 Minute, wenn sich der Benutzer aus der Anwendung abmeldet, geht dieser Thread einfach in eine Endlosschleife und wird niemals freigegeben. Wie kann ich sicherstellen, dass beim Klicken auf den Abmeldetasten alle Threads gelöscht werden?Java-Threads release richtig
Antwort
Wenn sich der Benutzer abmeldet, setzen Sie ein Flag auf false
. Dieses Flag sollte vom Thread überprüft werden, um nicht weiter zu laufen.
Das Anzeigen von Code wird hilfreicher sein.
Sie können Ihrer Hauptklasse, die Threads erstellt, einen Shutdown-Hook hinzufügen.
gibt nur ein Beispiel hier:
diese Zeile in Hauptklasse hinzufügen.
Runtime.getRuntime() addShutdownHook (neue Message());
statische Klasse Nachricht erweitert Thema {
public void run() {
System.out.println("Bye.");
try {
// do your work here
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Zunächst müssen Sie den Überblick über die Themen, um Sie zu starten, und die Komponenten, die Fäden selbst starten.
Zweitens müssen Sie diese ordnungsgemäß herunterfahren. Für Threads, die polling/loop verwenden, müssen Sie diese Schleifen verlassen (möglicherweise durch Setzen von Flags). Sie müssen auch Interrupt Threads, die möglicherweise auf E/A warten, und diesen Interrupt richtig behandeln. Informationen zu diesem häufig missverstandenen Problem finden Sie unter this article from Java Specialist (im Grunde setzen Sie das Interrupt-Flag auf dem unterbrochenen Thread zurück ...)
- 1. Java-Nebenläufigkeit - wie Thread richtig zu sperren und zu release
- 2. Release früher/Release oft für kommerzielle Software?
- 3. Über Autorelease/release und [Pool release]
- 4. NSArray Release Absturz
- 5. Release mit dem Master nach einem Patch-Release verschmelzen git
- 6. Jenkins wechselt von Rolling Release zu Stable (LTS) Release
- 7. upgrade spring-data-neo4j von 3.3.0.RELEASE auf 4.0.0.RELEASE
- 8. Frühling Stiefel 1.4.0.RELEASE und Frühling 4.3.2.RELEASE
- 9. NSString Absturz beim Release
- 10. Python Build/Release System
- 11. Tagging neuesten Release?
- 12. Release Management - Befehlszeile ausführen
- 13. Software-Release-Lebenszyklus
- 14. MKMapView Release Speicher
- 15. Git tag release version?
- 16. Funktionsaufruf bei Slider Release?
- 17. Gradle Release-Build nicht
- 18. Rake Release funktioniert nicht
- 19. Autorelease vs. Release
- 20. Maven Release: führt Problem
- 21. Iphone Release Problem
- 22. Timing der Release-Zweig
- 23. dapper.net release cached memory
- 24. Code Release-Management | SVN
- 25. Q_ASSERT Release Build Semantik
- 26. release Glib :: RefPtr
- 27. Meteor release changelog
- 28. Maven Release über Hudson
- 29. Maven Release-Eigenschaften
- 30. Rails Original Release Quellcode