2017.11.29
Java Thread
概要
Sun JVM
Green Thread
JDK1.2以前まではGreen Threadを提供していました。Green Threadは、OSが提供するNative Threadとは無関係に純粋にJavaで実装されたThreadを意味します。初期バージョンのJavaの互換性のために考案されましたが、この後の性能を向上させるためにNative Threadを使用する方式が採用され、Green Threadは、もはや使用されていません。
Native Thread
JDK 1.2からJava ThreadはOSが提供するNative Threadを利用して実装されます。Java ThreadとOS Threadのマッピング方式は、JavaのバージョンとOSの種類やバージョンによって異なります。たとえば、次の通りです。
1. Linuxでは、 1)Kernel2.6以前のバージョンでは、LWP(Light Weight Process)を利用してThreadを実装します。 2)Kernel2.6以降では、NPTL(Native Posix Threading Library)を利用してThreadを実装します。 LWP方式を使用する場合、(Kernel<2.6)一つのJava Threadが一つのJava Processに観察されます。 したがってMulti-threaded Java Applicationを駆動する場合、数十個〜数百個以上のJava Processが 駆動されたものと見ることができる。 2. SolarisではJava ThreadとOS Threadは1:1であり、OS ThreadとKernel Threadの関係は、 OSのバージョンに応じて異なります。 1)Solaris8では、M:Nマッピングを使用し、 2)Solaris 9では、Alternate Thread Libraryに基づき、1:1のマッピングを使用します。
外部参照
1.Java & Solaris Threading Model 2.Solaris(8) Alternate Thread Library