Java Thread
EXEM Knowledge Base
목차 |
[편집] 개요
[편집] Sun JVM
[편집] Green Thread
JDK 1.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 종류 및 버전에 따라 다르다. 예를 들어 보면 다음과 같다.
- Linux에서는 1) Kernel 2.6 이전 버전에서는 LWP(Light Weight Process)를 이용해 Thread를 구현한다. 2) Kernel 2.6 버전부터는 NPTL(Native Posix Threading Library)을 이용해 Thread를 구현한다. LWP 방식을 사용할 경우(Kernel < 2.6) 하나의 Java Thread가 하나의 Java Process로 관찰된다. 따라서 Multi-threaded Java Application을 구동할 경우 수십 개 ~ 수백 개 이상의 Java Process가 구동된 것으로 보일 수 있다.
- Solaris에서는 Java Thread와 OS Thread는 1:1이며 OS Thread와 Kernel Thread의 관계는 OS 버전에 따라 다르다. 1) Solaris 8에서는 M:N 매핑을 사용하며, 2) Solaris 9에서는 Alternate Thread Library에 기반한 1:1 매핑을 사용한다.