Es ist alles im Titel, wirklich. Ich weiß, Thread.sleep()
macht nur den aktuellen Thread schlafen, aber gibt es eine Möglichkeit, alle Threads zu zwingen, gleichzeitig zu schlafen, oder würde das auf die Selbstverwaltung sein?Gibt es eine Möglichkeit, alle laufenden Threads in Java schlafen zu lassen()?
Antwort
Es wäre gefährlich, den Thread von außen in den Schlaf zu legen, da er momentan in einem Zwischenzustand sein kann (das ist der Grund, warum es nicht gut ist, Thread von außen zu töten). Also mach es bitte über Selbstmanagement.
Wenn die Threads eines Programms ordnungsgemäß synchronisiert werden, würde der schlimmste Schaden, den ein externer Agent verursachen könnte, indem er vorübergehend einen oder mehrere Threads pausiert, sein, dass das Programm einen Echtzeittermin verpasst oder eine Leistungsanforderung nicht erfüllt. Es konnte keine Datenkorruption verursachen. Das heißt, * IF * das Programm ist richtig synchronisiert. Selbst wenn es nicht richtig synchronisiert wäre, würde das gleichzeitige Anhalten aller seiner Threads für exakt das gleiche Zeitintervall auch keinen Schaden verursachen. –
@jameslarge Ihr Thread steuert einen Schrittmotor. Weil es eingeschläfert wurde, sagte es ihm nicht, aufzuhören. Es traf jetzt die Wand und beschädigte das Gerät. Kein echtes Leben Beispiel? Ich habe einen 20K-Prototyp mit genau diesem Problem in C (der Thread wurde geschlafen, weil ich einen Debugger hatte). Es ist nicht generisch sicher, nur weil es synchronisiert ist. –
@GabeSechan, Das ist die Art von Sache, die ich meinte, als ich sagte: "Ich vermisse eine Echtzeit-Deadline", aber ich denke, die Betonung ist falsch ausgefallen. Echtzeit-Software ist eine ganze Kategorie für sich. Ich weiß, wovon du sprichst, nur in meinem Fall war es eine Innenwand, die den Schaden (repariert mit etwas Trockenmauer, Schlamm und Farbe) nahm, und der Prototyp war unversehrt. PS .: Meine offizielle Empfehlung an das mechanische Konstruktionsteam lautete: "Wir könnten dies mit kleineren Motoren machen." –
Die Antwort ist einfach: Es gibt keine Möglichkeit, den ganzen Thread von Java aus schlafen zu lassen (von der Innenseite der Anwendung).
Darüber hinaus gibt es auf Java viele interne Threads (wie GC-Thread, Finalization-Thread, ...), die Sie nicht manipulieren können, so dass "all" niemals möglich sein wird.
Grüße,
Loïc
- 1. Gibt es eine Möglichkeit, die Stacktraces für alle Threads in C#, wie java.lang.Thread.getAllStackTraces() zu bekommen?
- 2. Gibt es eine Möglichkeit, Threads in AndroidStudio zu überwachen?
- 3. CATextLayer NSBackGroundColorAttributeName gibt es eine Möglichkeit, es funktioniert zu lassen?
- 4. gibt es eine Möglichkeit, Threads auf sphinxsearch
- 5. Gibt es eine Möglichkeit, einen laufenden Countdown zu ändern?
- 6. Gtest wie alle laufenden Threads
- 7. Schlafen Schlaffunktionen alle Threads oder nur derjenige, der es ruft?
- 8. Gibt es eine Möglichkeit, Asio ohne Boost arbeiten zu lassen?
- 9. Gibt es eine Möglichkeit, einen Prozess "aufwärmen" zu lassen?
- 10. Gibt es eine Möglichkeit, Apache langsame Anforderungen protokollieren zu lassen?
- 11. Wie alle laufenden Threads beenden?
- 12. Erhalte eine Liste aller laufenden Threads in Java
- 13. Gibt es eine Möglichkeit, eine Java-Anwendung abhängig vom verwendeten Betriebssystem bestimmte Methoden ausführen zu lassen?
- 14. Gibt es eine Möglichkeit, alle Teildateien in SASS zu importieren?
- 15. Gibt es eine Möglichkeit, einem laufenden Hadoop-Cluster Knoten hinzuzufügen?
- 16. gibt es eine Möglichkeit zu schlafen auf jedem Intervall in php angegeben
- 17. Gibt es eine Möglichkeit, die Verwendung von Warten und Schlafen in Selen zu vermeiden?
- 18. Gibt es eine Möglichkeit, Hubot auf alle Nachrichten antworten zu lassen, die keine Befehle sind?
- 19. Gibt es eine andere Möglichkeit, Repaint() in Java zu tun?
- 20. Gibt es eine Möglichkeit, algebraische Typen in Java zu implementieren?
- 21. Gibt es eine Möglichkeit, Backspace-Schlüssel in Java zu ignorieren?
- 22. Gibt es eine Möglichkeit, globale Variablen in Java zu machen?
- 23. Gibt es eine Möglichkeit, zwei RenderedImage in Java zu vergleichen?
- 24. Gibt es eine Möglichkeit Anzahl von Threads zu bekommen, die ich in C# erstellen
- 25. Listet alle laufenden/wartenden Threads in ThreadPoolTaskExecutor auf
- 26. Wie alle laufenden Threads außer dem aktuellen Thread zu stoppen?
- 27. Slack: Gibt es eine Möglichkeit, alle @channel Benachrichtigungen zu deaktivieren
- 28. Gibt es eine Möglichkeit, alle Fehler von executeBatch zu bekommen?
- 29. Gibt es eine Möglichkeit, Doxygen anzuweisen, (alle) Namespaces zu ignorieren?
- 30. Gibt es eine Möglichkeit, alle PrimeFaces-Animationen zu deaktivieren?
Jeder Thread würde sich haben einzuschläfern. –
Vielleicht hilft diese Frage: http://stackoverflow.com/questions/20666454/how-to-pause-all-running-threads-and-then-resume – byxor
Haben Sie versucht, über alle laufenden Threads zu iterieren und sie zu stoppen Einer nach dem anderen? – Abdo