国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

攜程 java能實現(xiàn)go語言的協(xié)程嗎?

java能實現(xiàn)go語言的協(xié)程嗎?是或否的答案是肯定的,但估計要實現(xiàn)它需要很長時間。coroutine的設計得到了許多語言的支持,例如go中的gooutine和Python中的async。但是,您會發(fā)現(xiàn)

java能實現(xiàn)go語言的協(xié)程嗎?

是或否的答案是肯定的,但估計要實現(xiàn)它需要很長時間。coroutine的設計得到了許多語言的支持,例如go中的gooutine和Python中的async。但是,您會發(fā)現(xiàn),除了go之外,其他語言的協(xié)同過程中還有許多缺陷。協(xié)同過程中最重要的一點是不能被阻塞,這將直接影響協(xié)同過程的調(diào)度。然而,一種語言已經(jīng)發(fā)展了十多年,它的歷史負擔是可以想象的,它不能被世代更新。因此,新語言在這方面相對更好。

為什么Java堅持多線程不選擇協(xié)程?

Java從發(fā)明的第一天起就被定義為多線程網(wǎng)絡編程語言。Java最大的特點不是跨平臺,而是它的多線程模型(當時,C中沒有線程,正如我們現(xiàn)在看到的,C還沒有出現(xiàn))。因為近二十年來軟件產(chǎn)業(yè)的增長主要來自于網(wǎng)絡編程。網(wǎng)絡編程中最常見的模式是客戶機/服務器(client/server,又稱C/s),這種編程模式需要在服務器端同時接受客戶機的請求,即具有良好的并發(fā)特性,主要依賴于多線程技術。Java的主戰(zhàn)場是服務器端編程。因此,多線程技術對Java來說是非常重要和不可缺少的。

當我們要引入?yún)f(xié)處理時,我們要解決哪些問題。我認為這只不過是以下幾點:

節(jié)省資源,重量輕,具體來說:節(jié)省內(nèi)存,每個線程需要分配一段堆棧內(nèi)存,內(nèi)核中的一些資源,節(jié)省分配線程的開銷(創(chuàng)建和銷毀線程每次需要做一個系統(tǒng)調(diào)用),節(jié)省了線程切換帶來的大量開銷,配合NiO實現(xiàn)無阻塞編程,提高了系統(tǒng)的吞吐量,使用起來更方便。另外,async await(異步運行,但寫起來感覺是同步的)我們分開來談。

讓我們從記憶開始。以javaweb編程為例,Tomcat上woker線程池的最大線程數(shù)一般配置在50到500之間(spring boot的默認值是200)。也就是說,可以同時接受的請求太多了。如果超過最大值,請求將被拒絕。如果每個線程提供128KB,則500個線程的內(nèi)存消耗約為60MB。如果存在瓶頸,可能在CPU、IO、帶寬、DB-CPU等方面存在瓶頸,但是對于通常為數(shù)GB的Java運行時進程來說,內(nèi)存量的增加似乎不是一個大問題。