新聞中心
Java綠色線(xiàn)程到底是一個(gè)怎么回事呢?這些問(wèn)題需要我們從本質(zhì)中看問(wèn)題。下面我們就來(lái)看看Java綠色線(xiàn)程(Green Thread)是一個(gè)相對(duì)于操作系統(tǒng)線(xiàn)程(Native Thread)的概念。

創(chuàng)新互聯(lián)公司主營(yíng)北侖網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開(kāi)發(fā),北侖h5小程序開(kāi)發(fā)搭建,北侖網(wǎng)站營(yíng)銷(xiāo)推廣歡迎北侖等地區(qū)企業(yè)咨詢(xún)
操作系統(tǒng)線(xiàn)程(Native Thread)的意思就是,程序里面的線(xiàn)程會(huì)真正映射到操作系統(tǒng)的線(xiàn)程,線(xiàn)程的運(yùn)行和調(diào)度都是由操作系統(tǒng)控制的
Java綠色線(xiàn)程(Green Thread)的意思是,程序里面的線(xiàn)程不會(huì)真正映射到操作系統(tǒng)的線(xiàn)程,而是由語(yǔ)言運(yùn)行平臺(tái)自身來(lái)調(diào)度。
當(dāng)前版本的Python語(yǔ)言的線(xiàn)程就可以映射到操作系統(tǒng)線(xiàn)程。當(dāng)前版本的Ruby語(yǔ)言的線(xiàn)程就屬于綠色線(xiàn)程,無(wú)法映射到操作系統(tǒng)的線(xiàn)程,因此Ruby語(yǔ)言的線(xiàn)程的運(yùn)行速度比較慢。#t#
難道說(shuō),Java綠色線(xiàn)程要比操作系統(tǒng)線(xiàn)程要慢嗎?當(dāng)然不是這樣。事實(shí)上,情況可能正好相反。Ruby是一個(gè)特殊的例子。線(xiàn)程調(diào)度器并不是很成熟。
目前,線(xiàn)程的流行實(shí)現(xiàn)模型就是Java綠色線(xiàn)程。比如,stackless Python,就引入了更加輕量的綠色線(xiàn)程概念。在線(xiàn)程并發(fā)編程方面,無(wú)論是運(yùn)行速度還是并發(fā)負(fù)載上,都優(yōu)于Python。
另一個(gè)更著名的例子就是ErLang(愛(ài)立信公司開(kāi)發(fā)的一種開(kāi)源語(yǔ)言)。
ErLang的Java綠色線(xiàn)程概念非常徹底。ErLang的線(xiàn)程不叫Thread,而是叫做Process。這很容易和進(jìn)程混淆起來(lái)。這里要注意區(qū)分一下。
ErLang Process之間根本就不需要同步。因?yàn)镋rLang語(yǔ)言的所有變量都是final的,不允許變量的值發(fā)生任何變化。因此根本就不需要同步。
final變量的另一個(gè)好處就是,對(duì)象之間不可能出現(xiàn)交叉引用,不可能構(gòu)成一種環(huán)狀的關(guān)聯(lián),對(duì)象之間的關(guān)聯(lián)都是單向的,樹(shù)狀的。因此,內(nèi)存垃圾回收的算法效率也非常高。這就讓ErLang能夠達(dá)到Soft Real Time(軟實(shí)時(shí))的效果。這對(duì)于一門(mén)支持內(nèi)存垃圾回收的語(yǔ)言來(lái)說(shuō),可不是一件容易的事情。
當(dāng)前文章:如何看待Java綠色線(xiàn)程的相關(guān)應(yīng)用效果
分享地址:http://www.5511xx.com/article/cocjddh.html


咨詢(xún)
建站咨詢(xún)
