Guys ich habe kürzlich Multedread Programmierung mit Java im Falle von Linux-Threads, ich weiß, dass der Kernel sie plant (wie sie sind die Einheitseinheiten, die geplant sind), aber Java-Programme auf JVM ausgeführt werden, die in meinem System (RHEL 6.1) ist als ein Programm implementiert, das als User-Space-Instanz ausgeführt wird. Also, ohne dass der Kernel sich der Java-Threads bewusst ist, wie kommt es, dass präemptives Multitasking in JVM ausgeführt wird? es wird hilfreich sein, wenn der ganze Mechanismus der JVM und Kernel-Interaktion in diese Sache zu tun .plz zitiert mögliche Quellen von Informationen gegebenWie sind Java-Threads geplant?
Antwort
liest Distinguish Java threads and OS threads? Wie ich in den Kommentar Java-Threads das sind ganz normale OS Threads nur JVM Code ausgeführt
Ja, ich verstehe es, aber plz sagen Sie mir, wie die Interpretation von Java-Code durch JVM-Interpreter in dieser Multithread-Umgebung erfolgt – Tanay
Außer Synchronisationsaktionen interpretiert jeder Thread Java-Code unabhängig als wenn es der einzige Thread wäre. Wenn ein neuer Thread erstellt wird, wird angegeben, welcher Java-Code interpretiert werden soll. –
Die jvm ist nur ein normaler Prozess, der mit einem Thread beginnt und hinterher so viele Threads erzeugen kann, wie er will. Die Planung erfolgt auf zwei Ebenen - zwischen Prozessen und zwischen Threads innerhalb von Prozessen. All dies geschieht über das Betriebssystem (via libs) - der jvm greift einfach ein. Google posix threads für mehr Details - das ist was dem jvm ausgesetzt (API).
Dies geht ein bisschen in den Details: http://www.ibm.com/developerworks/java/library/j-rtj3/
Themen in den Java/JVM Prozesslandkarten zu einem nativen Thread und Sie können sowohl die Java-Thread-ID und den native Thread-ID in einem Thread-Stack-Trace-Dump sehen. Holen Sie sich den Thread-Stack aller Java-Threads Ihr Lieblingswerkzeug:
- Befehlszeilensignale wie Strg + Pause (Fenster) oder ctrl + \ linux) in der Konsole, auf die das Java-Programm wird
- Kommandozeilen-Tool ausgeführt wird (töten -quit oder jstack aus der JDK)
- visuelle vm in JDK und/oder jmx etc
Beispiel Extrakt von der ersten Zeile eines solchen Gewindes dump: ... tid = 0x0000002adaba9c00 NID = 0x754c ...
tid = Java-Thread-ID
nid = native id (die OS-Thread-ID)
Verwenden Sie die Werkzeuge des Betriebssystems mehr über das Gewinde die native id (es verwendet, um herauszufinden, ist in hex).
Innerhalb des Java-Code, den Sie ThreadMXBean haben programmatisch mehr Thread Informationen abrufen, wenn Sie wollen http://docs.oracle.com/javase/6/docs/api/java/lang/management/ThreadMXBean.html
„, aber Java-Programme werden auf JVM ausgeführt werden, die in meinem System (RHEL 6.1) als ein Programm implementiert ist dass als User-space laufen instance.So, ohne den Kernel kennt die Java-Threads zu sein ...“
Diese Aussage für alle modernen JVM nicht korrekt ist, die eigene Threads verwenden. Ich denke, das war der Standard seit Java 1.2. Native Thread-Implementierung durch eine JVM bedeutet, dass jedes Mal, wenn ein Thread einen Thread in Java-Code instanziiert/ausführt, die JVM das Betriebssystem auffordert, den Thread zu erstellen. Da es sich um native Threads handelt, kennt der Kernel diese und behandelt sie entsprechend.Darüber hinaus unterstützt/implementiert Linux POSIX-Threads, und als solches erhalten Sie auf einem Linux-basierten System ein Pthread-Verhalten für die Threads Ihrer Java-Anwendungen
- 1. PyPy und CPython: sind große Leistungssteigerungen geplant?
- 2. Wie genau werden Tasklets intern geplant?
- 3. Angular2 - Wie konfiguriert man die system-config.ts, wenn neue Bibliotheken wie angular2-material2 Paket geplant sind
- 4. Post-Methode Keine Warnungen wie geplant geben?
- 5. ein Sonnensystem in opengl anlegen - Beleuchtung nicht wie geplant
- 6. Jobs erkennen, die nicht wie geplant ausgeführt wurden
- 7. Geplant Automatisieren Ausführung des Tests in Nunit
- 8. svn diff, wenn Dateien mit "Verlauf geplant mit Festschreiben" markiert sind
- 9. Sind für eine zukünftige Version von Scala irgendwelche Sprach- oder Spezifikationsänderungen geplant?
- 10. Kleinschreibung <--> Großbuchstabe funktioniert nicht wie geplant
- 11. Einen Zeiger nicht kompilieren, wie ich geplant hatte
- 12. jQuery Slider funktioniert nicht auf dem Handy wie geplant
- 13. Hibernate_sequence Fehler in Spring Boot Batch (geplant)
- 14. Wie teuer sind MySQL-Ereignisse?
- 15. So stoppen Sie sofort die Aufgabe in Java.util.Timer-Klasse geplant
- 16. Ist geplant, Android PdfRenderer in eine Support-Bibliothek aufzunehmen?
- 17. Werden 32 Threads von 32 Block als Warp geplant?
- 18. Taskfortsetzung wurde nicht im Thread-Pool-Thread geplant
- 19. geplant Alarm zu jeder Minute der Uhr android
- 20. Wie werden leichtgewichtige Threads vom Linux-Kernel auf einem Multichip-Multicore-SMP-System geplant?
- 21. SSIS-Paket schlägt fehl, wenn mit Agent-Auftrag geplant
- 22. Geplant weiterhin ausgeführt nach Deaktivieren oder Deimplementierung meiner Anwendung
- 23. Finden Sie heraus, ob die Anwendung mit CeRunAppAtTime geplant wurde
- 24. Was ist geplant Lebenszyklus Safari für Silverlight (NPAPI)
- 25. Wie kann ich meine Funktion wie geplant funktionieren lassen? Ist meine Logik falsch? (LANG)
- 26. Versuch, einen Satz des Pythagoras zu machen, aber es funktioniert nicht wie geplant
- 27. Boolesches Marshalling mit LayoutKind.Explicit, Ist das wie geplant fehlerhaft oder fehlgeschlagen?
- 28. Wie kann ich GcmNetworkManager abfragen, um zu sehen, ob meine Aufgabe geplant ist oder nicht?
- 29. HTML-Tabelle bedingte Formatierung Code in Javascript nicht wie geplant funktioniert
- 30. Wie sind Werttypen wie Objekte?
Nicht sicher, aber jeder Java-Thread wird von einem dedizierten Betriebssystem-Thread behandelt. Also muss Ihr Betriebssystem nicht auf JVM usw. achten. –