為什么 Java 堅持多線程不選擇協(xié)程?
先說結(jié)論:協(xié)程是非常值得學(xué)習(xí)的概念,它是多任務(wù)編程的未來。但是Java全力推進(jìn)這個事情的動力并不大。
先返回到問題的本源。當(dāng)我們希望引入?yún)f(xié)程,我們想解決什么問題。我想不外乎下面幾點:
節(jié)省資源,輕量,具體就是:
節(jié)省內(nèi)存,每個線程需要分配一段棧內(nèi)存,以及內(nèi)核里的一些資源
節(jié)省分配線程的開銷(創(chuàng)建和銷毀線程要各做一次syscall)
節(jié)省大量線程切換帶來的開銷
與NIO配合實現(xiàn)非阻塞的編程,提高系統(tǒng)的吞吐
使用起來更加舒服順暢(async+await,跑起來是異步的,但寫起來感覺上是同步的)
標(biāo)簽:線程