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