如何看待Java綠色線程的相關應用效果
Java綠色線程到底是一個怎么回事呢?這些問題需要我們從本質中看問題。下面我們就來看看Java綠色線程(Green Thread)是一個相對于操作系統線程(Native Thread)的概念。
操作系統線程(Native Thread)的意思就是,程序里面的線程會真正映射到操作系統的線程,線程的運行和調度都是由操作系統控制的
Java綠色線程(Green Thread)的意思是,程序里面的線程不會真正映射到操作系統的線程,而是由語言運行平臺自身來調度。
當前版本的Python語言的線程就可以映射到操作系統線程。當前版本的Ruby語言的線程就屬于綠色線程,無法映射到操作系統的線程,因此Ruby語言的線程的運行速度比較慢。#t#
難道說,Java綠色線程要比操作系統線程要慢嗎?當然不是這樣。事實上,情況可能正好相反。Ruby是一個特殊的例子。線程調度器并不是很成熟。
目前,線程的流行實現模型就是Java綠色線程。比如,stackless Python,就引入了更加輕量的綠色線程概念。在線程并發編程方面,無論是運行速度還是并發負載上,都優于Python。
另一個更著名的例子就是ErLang(愛立信公司開發的一種開源語言)。
ErLang的Java綠色線程概念非常徹底。ErLang的線程不叫Thread,而是叫做Process。這很容易和進程混淆起來。這里要注意區分一下。
ErLang Process之間根本就不需要同步。因為ErLang語言的所有變量都是final的,不允許變量的值發生任何變化。因此根本就不需要同步。
final變量的另一個好處就是,對象之間不可能出現交叉引用,不可能構成一種環狀的關聯,對象之間的關聯都是單向的,樹狀的。因此,內存垃圾回收的算法效率也非常高。這就讓ErLang能夠達到Soft Real Time(軟實時)的效果。這對于一門支持內存垃圾回收的語言來說,可不是一件容易的事情。