Um Ihre Frage am direktesten zu beantworten, wird die präzise Semantik, wie Threads implementiert werden, bewusst undefiniert durch die JVM-Spezifikation.
FWIW, Sebastions Aussage, dass "Java exponiertes Threading-Modell auf jeder Plattform gleich ist und in den Java-Spezifikationen definiert ist. Zu einer Java-Anwendung sollte das zugrundeliegende Betriebssystem sogar für Threading völlig transparent sein", ist ungenau.
Ich habe signifikante empirische Unterschiede zwischen Threading unter Windows und Linux in Bezug auf Thread-Verhungern mit Wait/Notify gefunden. Linux ist deutlich anfälliger für Hunger, wenn die vielen Threads für eine einzige Sperre kämpfen - in dem Maße, dass ich 3 Größenordnungen mehr Threads in Windows zu verhungern als in Linux laden musste.Bei stark beanspruchten Sperren werden die Java-Parallelitätsperren mit einem fairen Modifizierer kritisch.
Zahlen zu verdeutlichen, hatte ich Probleme unter Linux mit einer Sperre stark von 31 Fäden behauptete, wo der gleiche Code unter Windows 10000 erforderlich (ja, das ist 10) Threads beginnen Hungerprobleme zu demonstrieren.
Zu allem Überfluss gab es unter Linux 3 verschiedene Threading-Modelle, von denen jedes unterschiedliche Eigenschaften hat.
Meistens war Threading nach meiner Erfahrung transparent, aber Streitfragen verdienen sorgfältige Prüfung.