그린 스레드?

그린 스레드(Green Thread)는 네이티브 스레드에 반대되는 말이다.



네이티브 스레드(Native Thread)

네이티브 스레드는 OS가 관리하는, 진짜 하드웨어 수준의 스레드를 말한다.
네이티브 스레드를 5개 생성하면 진짜 스레드가 5개 생성된다.
코어가 넉넉한 상황에서는 그린 스레드보다 우월한 성능을 산출할 수 있다.

C++의 std::thread, 자바의 Thread(1.3~) 등이 전부 네이티브 스레드라고 할 수 있다.




그린 스레드(Green Thread)

반면, 그린 스레드는 소프트웨어 수준에서 관리되는 가짜 스레드를 말한다.
런타임 라이브러리나 가상머신 등을 통해 제어를 분할, 스레드를 흉내내곤 한다.
그래서 그린 스레드는 10개를 생성하더라도 실제 스레드는 1개만 생성될 수 있다.

실제 스레드를 쪼개쓰지 않기 때문에 멀티코어 환경을 극한으로 활용하기엔 제약이 좀 있는 편이다.
하지만 실제 스레드의 사용에서 발생하는 스레드 생성, 전환, 동기화 등의 비용이 적어, 오히려 괜찮은 효율을 보일 수도 있다.
싱글코어 환경에서는 더욱.

Go의 goroutine, 파이썬의 Thread 등이 그린 스레드의 구현예라 할 수 있겠다.
대부분의 언어에서 라이브러리의 형태로 사용될 수 있다.




어원

자바의 초기 스레드 라이브러리명이 Green Thread였다고 한다.
그리고 과거 Sun의 개발팀인 Green Team이 저걸 만들었다. 그래서 그린 스레드다.
초기 자바(1.1~1.2)에는 네이티브 스레드가 없었다고...



참조
https://perfectacle.github.io/2019/03/10/green-thread-vs-native-thread/
https://en.m.wikipedia.org/wiki/Green_threads