虛擬線程正被提議用于Java,以顯著減少編寫、維護(hù)和觀察高吞吐量并發(fā)應(yīng)用程序所需的工作量。想了解有關(guān)java更多詳細(xì)信息,建議參加Java培訓(xùn),通過系統(tǒng)全面的學(xué)習(xí),可以快速提升自己。
Oracle提交的JDK增強(qiáng)計(jì)劃(JEP)草案要求預(yù)覽虛擬線程,作為Java標(biāo)準(zhǔn)版的一部分。虛擬線程將用輕量級用戶模式線程實(shí)現(xiàn)來補(bǔ)充代表操作系統(tǒng)線程的Java平臺線程,從而更有效地利用可用硬件,并大幅降低成本。
建議中指出,線程對于表示并發(fā)單元(如事務(wù))非常有用。Java當(dāng)前的線程實(shí)現(xiàn)為每個(gè)Java線程使用一個(gè)操作系統(tǒng)線程,而操作系統(tǒng)線程稀少且成本高昂?,F(xiàn)代服務(wù)器可以處理比操作系統(tǒng)線程多幾個(gè)數(shù)量級的并發(fā)事務(wù)。
編寫高吞吐量服務(wù)器軟件的開發(fā)人員必須在事務(wù)之間共享線程,以有效利用硬件。這是使用線程池完成的,線程池將一個(gè)接一個(gè)地將線程借給一個(gè)事務(wù),以節(jié)省為每個(gè)事務(wù)創(chuàng)建線程的成本。當(dāng)這還不夠時(shí),開發(fā)人員開始將線程返回到池中,甚至在事務(wù)的中間,當(dāng)?shù)却齀/O時(shí),這會導(dǎo)致異步的編程風(fēng)格,需要一個(gè)單獨(dú)的、不兼容的API集,并且使得故障排除、調(diào)試、觀察和分析非常困難。在java培訓(xùn)中,有系統(tǒng)全面的理論知識和企業(yè)級實(shí)戰(zhàn)項(xiàng)目,可以讓你真正掌握java知識和技能,更好地進(jìn)行項(xiàng)目開發(fā)。
虛擬線程是不阻塞操作系統(tǒng)線程的java.lang.Thread的用戶模式實(shí)現(xiàn),可實(shí)現(xiàn)接近最佳的硬件利用率。虛擬線程允許高水平的并發(fā)性和高吞吐量,同時(shí)程序與Java平臺和工具的基于線程的設(shè)計(jì)保持協(xié)調(diào)。虛擬線程對于平臺線程就像虛擬內(nèi)存對于物理RAM一樣:一種機(jī)制,通過自動(dòng)映射到底層物理資源來提供豐富的“虛擬”資源。
該提案指出,使用虛擬線程不需要學(xué)習(xí)新的編程模型。使用Java編寫并發(fā)應(yīng)用程序的開發(fā)人員已經(jīng)知道該模型。然而,由于線程的高成本,開發(fā)人員需要改掉因需要而產(chǎn)生的舊習(xí)慣,特別是使用線程池,這些線程池只有在它們所共享的資源稀缺或創(chuàng)建成本高昂時(shí)才有用。
虛擬線程是由JDK實(shí)現(xiàn)的java.lang.Thread的實(shí)例,允許許多活動(dòng)實(shí)例在同一進(jìn)程中共存。虛擬線程的語義與平臺線程相同,只是它們屬于單個(gè)線程組,不能列舉。如果你正在考慮如何快速學(xué)習(xí)java,那么參加java培訓(xùn)掌握更全面的知識和技能將是一個(gè)很好的開始。