2010-02-25 38 views

回答

16

Java線程可以以符合規範的任何方式實現。該規範不需要特定的實現。

實際上,所有現代桌面和/或服務器JVM都將Java線程實現爲本機線程。這意味着每個Java線程都有一個本地線程,並且操作系統執行所有的調度,就像它爲C程序做的那樣。

某些舊的JVM和可能的某些JVM用於資源有限的設備可能會以使用的本機線程數量少於運行的Java線程數量(或可能爲1)的方式實現線程。據稱這些實現實現了所謂的「綠色線程」。在這種情況下,JVM本身負責任務切換和調度,而不是將該任務委託給操作系統。

+0

任何人都可以給我一個這方面的參考? – 2012-02-13 20:44:15

+0

@espertus引用HotSpot JVM實現的源代碼可以在http://openjdk.org找到。 – 2012-11-01 09:18:25

5

當然,這取決於JVM的實現,但我認爲它們是相同的。它是Java中的一個線程是通過本地線程實現的。您可以期待/使用Java線程處理本機線程的各種事情。

0

Java線程和Native線程完全不同。本機線程是底層平臺(OS)的一部分。

Java線程是支持併發性的Java語言的一個特性。 Java規範控制Java線程的API和功能。最終Java線程將在執行java程序期間映射到本地線程。 此外,java線程不需要使用本機線程映射一對一。

0

Java線程(線程類和可運行接口)是比內存共享應用程序中的本機線程更高級別的API。我推薦了Oaks和Wong的這本書「Java Threads」http://shop.oreilly.com/product/9780596007829.do。實現Runnable接口是很常見的做法,但它取決於您的代碼範圍。