2010-07-13 6 views
15

Wie ich weiß, Java verwendet Betriebssystem-Threads (im Gegensatz zu z. B. Erlang), bedeutet dies, dass die mit Java unter Windows und Linux erstellten Threads sich möglicherweise anders verhalten.Verhalten sich in Java erstellte Threads unter Windows und Linux anders?

Gibt es Unterschiede zwischen Java-Threads unter Windows und Linux? Was ist der größte Unterschied? Es ist vielleicht nur ein Unterschied in der Leistung?

Antwort

16

Dies ist eine sehr allgemeine Frage, also werde ich eine allgemeine Antwort geben.

Java wechselte von grünen Threads zu nativen Threads early in its development. Dies bedeutet nicht, dass sich unter Windows und Linux erstellte Threads anders verhalten, da beide Plattformen native Threads in ihren jeweiligen JVM-Implementierungen verwenden.

Die Thread-Schnittstelle, die Java von jedem Betriebssystem offen gelegt wird, und ähnlich sind die nativen Schnittstellen zum Threading über Pthreads und Windows-Threads sehr ähnlich.

Die größten Unterschiede in Bezug auf Threading auf den beiden Plattformen sind, dass alle Threads unter Linux eine Form des Prozesses sind. Windows behandelt Threads und Prozesse sehr unterschiedlich.

In meiner persönlichen Erfahrung sind native Threads unter Windows etwas leichter und können in Einzelprozessanwendungen etwas besser abschneiden. Entsprechend (und vielleicht auch irrelevant) sind Windows-Prozesse im Vergleich zu ihren Linux-Gegenstücken extrem schwergewichtig.

0

Ich habe bereits Thread in beiden OS verwendet, und keine Unterschiede für den Java-Entwickler. :)

0

JVM ausblenden aller OS Sie Unterschiede ...

wie zuvor wurde die Fäden auf Fenster beantwortet sind große Schwergewicht, die diejenigen linux.

durch Erfahrung eine schwere Multi Threading-Anwendung könnte einige Verzögerungen mit automatischen Speicher Garbage Collector haben und diese können riesige Speicherspitzen generieren.

Verwandte Themen