綠色和本地線程簡單介紹
author: mdwolf 2005-08-02
================================================================================
java
There are two versions of the Java Development Kit (JDK) installed.
The first is the standard Java 1.1.x version, and the other is the new Java 2 (1.2.x) version.
There are two threading types available with each of the JDK's: green and native.
Green threads implement user level threads, and use only a single OS thread.
Native threads use the OS's threading system, and use one OS thread per java thread.
The threading modes can be selected by using the -green or -native flags when executing java.
JDK Versions Available
================================================================================
Flavor Version RPM Package Location (JAVA_HOME) Default thread mode
java 1.1.8_v1 jdk /usr/local/jdk118_v1 green
java2 1.2.2_RC3 jdk2 /usr/local/jdk1.2.2 native
Solaris 相關
================================================================================
結構
命令行標志:
jdk-tool [-green -native] options...
% setenv THREADS_FLAG [-green native]
缺省狀態是綠線程。 假如指定了命令行標志,它將覆蓋 THREADS_FLAG 環境變量的設置。
如何確定使用哪一種線程選項?
Solaris Java 開發工具包有兩種線程處理軟件的實現。
缺省的線程實現叫作綠線程;還可以用一種本地線程實現。
本地線程在某些方面優于缺省的綠線程實現,這要視計算環境而定。 以下是使用本地線程的某些好處:
假如在多處理器的環境中運行 Java 代碼,則 Solaris 內核程序可在并行處理器上調度本地線程,
以增強性能。 相比之下,綠線程只在用戶級上存在,且沒有被操作系統映射到多內核線程中。
并行機制產生的增強功能不能用綠線程來實現。
本地線程實現能對使用 Solaris 本地線程的 C 庫進行調用,但該庫卻不能用在綠線程中。
虛擬機使用本地線程時,它能避免某些低效率的 I/O 系統調用的重復映射,
但用綠線程時這些重復映射是必需的。
在某些場合中,使用缺省的綠線程可能更恰當些。 非多線程安全 (MT-safe) 的平臺相關代碼
可能不能與本地線程一起正確地運行。
一般來說,假如不直接使用本地 Solaris 線程機制,則需用 -D_REENTRANT 選項來編譯平臺相關代碼,
以確保它們能在線程化環境中正常運行。 可能還需要用到某些 Solaris 接口的可重入版本。
有關 Solaris 多線程編程的專門信息,可查閱“Solaris 軟件開發人員問答篇的多線程編程指南”。
該信息也可在 docs.sun.com 站點找到。
在綠線程下運行的代碼的線程同步錯誤可能會被隱藏,而在本地線程下運行時卻可能會顯現出來。
假如您的代碼要在兩種不同的線程包下運行,則必須考慮這種可能性。
如何指定選擇的線程選項?
缺省狀態下, Solaris Java 開發工具包的所有工具都使用綠線程。
要指定使用某種本地線程,可以通過設置 THREADS_FLAG 環境變量來實現:
% setenv THREADS_FLAG native
將 THREADS_FLAG 設為 green 值,即可恢復使用綠線程:
% setenv THREADS_FLAG green
也可以用 JDK 工具中的 -native 或 -green 命令行標志來選擇線程選項。
線程標志必須是命令行上指定的第一個選項。
命令行標志的用法如下例所示:
% java -native mypkg.MyClass
% appletviewer -green MyApplet.Html
新聞熱點
疑難解答