Wie teuer ist das erstellen eines neuen Threads in Java? Wann sollten wir prüfen, unter Verwendung eines thread-pool?
Frage ich mich, wo ist die Schwelle, nach der ein thread pool verwendet werden soll. Wie viele neue threads pro Sekunde kann ich die erstellen, ohne die Verwendung eines thread-pool noch die Vermeidung von spürbaren performance-Einbußen?
Gibt es irgendwelche beobachtbaren open-source-thread-pool-Implementierungen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte man immer mit einem thread-pool. Nicht nur für Leistung, sondern für die Leichtigkeit der Nutzung der java.util.concurrent-Paket erhalten Sie. Mit Java 5 und höher, thread-pooling ist eingebaut.
Anstatt zu denken, im Sinne von "Fäden", verwenden Sie das Testamentsvollstrecker Schnittstelle zum ausführen von Aufgaben, die Sie benötigen, um durchgeführt werden. Erstellen eines neuen thread-pool ist so einfach wie:
Vollständige Dokumentation zu java.util.concurrent-Paket ist hier:
http://java.sun.com/javase/6/docs/api/java/util/concurrent/package-frame.html
Angesichts der Kosten, die einzige gültige Antwort ist, um es zu testen für sich selbst (nicht ganz so eleganten Weg, zu sagen, Sie habe ich noch nie gemacht, so ein test, und wird es nie tun, wie die moderne Ausführung-Mechanismus bietet weit Fortgeschritten Schaffung/Zerstörung-Mechanismen).
Consdering vorhandenen Implementierungen, Java modernen Versionen (ab Java 5) bietet verschiedene Unterklassen von ThreadPoolExecutor vereint die Vorteile eines thread-pool mit den meisten modernen Konzepte von java.util.Auger : die Vollzieher.
Außerdem würde ich nie empfehlen Sie genug, um Sie zu vergessen, Threads und repalce mit Runnable, callable-und fortgeschrittenen-Berechnung von Objekten. Auf diese Weise können Sie leicht Umschalten Umsetzung der Vollzieher.
Erstellen von threads ist immer teuer, unabhängig von der Plattform. Tatsächliche Zeit für die Erstellung eines Threads hängt von der OS.
Ich würde empfehlen, mit einem thread-pool, falls Sie erstellen kurzlebigen threads sehr oft. Zum Beispiel, wenn die primäre Aufgabe der Anwendung ist die Wartung solcher kurzlebigen Aufgaben, einen thread-pool wäre sehr nett.
Einen thread-pool ist auch schön, wenn man zu viele threads. Kontextwechsel zwischen threads kann zu töten, die Leistung auch. Lange Geschichte kurz, auf modernen quad-core-PC-Architektur sollte das Ziel sein, nicht mehr als 200 threads zur gleichen Zeit.