Was sind die leichten und schweren Gewinde in Bezug auf Java?Schweres und leichtgewichtiges Gewinde
Antwort
In den meisten Systemen Lightweight-Threads sind die normalen Threads, die Sie mit Hilfe der Bibliothek erstellen, wie p_threads in Linux.
Während Schwergewicht, in einigen Systemen, beziehen sich auf einen Systemprozess, mit seinem eigenen virtuellen Speicher und einer komplexeren Struktur, wie Informationen über die Prozessleistung/Statistiken.
Für weitere Informationen:
http://www.computerworld.com/s/article/66405/Processes_and_Threads
http://msdn.microsoft.com/en-us/library/ms684841(VS.85).aspx
es auf die Menge an „Kontext“ verwandt ist mit einem Gewinde verbunden ist, und folglich wird die Menge an Zeit, die eine „Kontextumschaltung auszuführen ".
Heavyweight-Threads (normalerweise Kernel/OS-Level-Threads) haben eine Menge Kontext (Hardware-Register, Kernel-Stacks, usw.). Es braucht also viel Zeit zwischen den Threads zu wechseln. Heavyweight-Threads können auch Einschränkungen für sie haben, zum Beispiel können auf einigen Betriebssystemen Kernel-Threads nicht vorweggenommen werden, was bedeutet, dass sie nicht gewaltsam ausgewechselt werden können, bis sie die Kontrolle aufgeben.
Lightweight-Threads dagegen (normalerweise User-Space-Threads) haben viel weniger Kontext. (Sie teilen im Wesentlichen den gleichen Hardware-Kontext) Sie müssen nur den Kontext des Benutzer-Stacks speichern, daher ist die Zeit, die zum Wechseln von Lightweight-Threads benötigt wird, viel kürzer.
Auf den meisten Betriebssystemen sind alle Threads, die Sie als Programmierer im Benutzerbereich erstellen, im Vergleich zu den Kernel-Space-Threads leichtgewichtig. Es gibt keine formale Definition von Heavyweight und Lightweight, es ist eher ein Vergleich zwischen Threads mit mehr Kontext und Threads mit weniger Kontext. Vergessen Sie nicht, dass jedes Betriebssystem eine eigene Implementierung von Threads hat, und die Linien zwischen schweren und leichten Threads sind nicht unbedingt klar definiert. In einigen Programmiersprachen und Frameworks, wenn Sie einen "Thread" erstellen, erhalten Sie möglicherweise nicht einmal einen vollständigen Thread, Sie erhalten möglicherweise nur eine Abstraktion, die die tatsächliche Anzahl der darunter liegenden Threads verbirgt.
[Einige OSes erlauben Threads Adressraum zu teilen, so Threads, die in der Regel ziemlich schwer sein würde, sind etwas leichter]
Java Standard Themen sind ziemlich schwer im Vergleich zu Erlang Fäden, die sehr leicht spawnable Prozesse sind. Erlang demonstriert eine verteilte Zustandsmaschine. Als Beispiel schlägt http://kilim.malhar.net/, eine Java-Erweiterungsbibliothek, die auf dem Actor-Modell der Parallelität basiert, ein Konstrukt für leichte Threads in Java vor. Anstatt Thread run() zu implementieren, implementiert ein Kilim-Thread die Kilim-Bibliothek mithilfe einer execute() -Methode. Anscheinend zeigt es, dass die Laufzeit von Java die Leistung von Erlang übertrifft (zumindest in einer lokalen Umgebung AFAIK). Java hatte tatsächlich solche Dinge in der ursprünglichen Sprachspezifikation namens "grüne Threads", aber nachfolgende Java-Versionen ließen sie zugunsten nativer Threads fallen.
- 1. Gabel und vorhandene Gewinde?
- 2. Schweres Speicherleck mit Django
- 3. jmeter Gewinde und rampup Verständnis
- 4. verwendet Gewinde und Rubin Mechanisieren sicher?
- 5. Gewinde in Objective-C
- 6. Sind diese Gewinde sicher?
- 7. Gewinde Daten in Yii2
- 8. Probleme mit Adapter + Gewinde
- 9. Ist dieses Gewinde sicher?
- 10. Gewinde-Anwendung + IntegrityError
- 11. Gewinde sicher Sturmschraube
- 12. Warum stirbt C# Gewinde?
- 13. mit Gewinde in Klasse
- 14. Was sind Gewinde?
- 15. Optimizing Gewinde Poolgrße
- 16. Was ist `Gewinde` im Quellbereich
- 17. Haskell - Langsam Steckverbindung bei Gewinde
- 18. Verständnis async/erwarten ohne Gewinde
- 19. Clojure - Optimierung eine Gewinde Karte
- 20. Stanford CoreNLP Annotatoren Gewinde sicher?
- 21. Static Compilieren von Gewinde Beispiel
- 22. Gewinde in C#. Unterbrechbare Aufgabe
- 23. Gewinde und Gabel(). Wie kann ich damit umgehen?
- 24. Kivy mit Gewinde Python-Code ausführen und matplotlib
- 25. Was ist der Unterschied zwischen Griff und Gewinde?
- 26. Gewinde sichere Art und Weise eine ganze Zahl in Delphi
- 27. Multi-Gewinde und Multi-Prozesse Pools in Multiprocessing
- 28. Unterschied zwischen AppDomain, Assembly, Prozess, und ein Gewinde
- 29. Wie optimiere Code mit Introspektion + schweres Alloc auf dem iPhone
- 30. pThreads: Gewinde Verhungern verursacht durch schnelle Wiederverriegelungs
@TFD - die OP stellte nur 4 Fragen, es gibt viel Zeit, um eine Antwort zu akzeptieren. – ChrisF