1. 程式人生 > >Java執行緒與goroutine對比

Java執行緒與goroutine對比

Java Thead為執行緒,執行緒是作業系統排程的最小單位。

1、執行緒間切換(不出讓情況下):搶佔式排程,隨機執行。

2、實現:繼承Thread類或者實現Runnable介面,Callable類似,或者通過執行緒池。

3、執行緒切換代價大

4、一般通過共享記憶體通訊

Goroutine 為go併發執行的排程單位。

1、執行緒間切換:業務要求切換(runtime.Gosched())、發生IO,等待chanel導致執行阻塞,否則單核goroutine是序列執行。

2、實現:function前加 ‘go’關鍵字 

3、goroutine切換代價小

4、一般通過通訊共享記憶體

gorouine可以說是golang實現的協程,不歸作業系統管理。

參考文章: