《深入淺出Java多執行緒》筆記
阿新 • • 發佈:2020-07-25
基礎篇
批處理作業系統記憶體裡只能有一個程式,指令序列執行、效率低。於是引入程序(記憶體裡分配了空間、正在執行的程式)的概念,加上CPU時間片輪轉,實現了併發。後來人們不滿於程序只能執行一個任務,引入執行緒的概念,於是QQ上可以一邊聊天一邊下載檔案了。總結一下,就是程序讓作業系統的併發性成為了可能,而執行緒讓程序的內部併發成為了可能。
相比多程序,多執行緒實現併發有一些好處:
- 通常需要使用共享資源,執行緒間的通訊比較簡單
- 執行緒是輕量級的,系統開銷更小
程序和執行緒的區別:
- 本質區別是是否單獨佔有記憶體地址空間及其它系統資源(比如I/O)
- 程序單獨佔有一定的記憶體地址空間,資料共享複雜但是同步簡單
- 一個程序出現問題不會影響其他程序,
可靠性高
- 程序的建立和銷燬不僅需要儲存暫存器和棧資訊,還需要資源的分配回收以及頁排程,開銷較大
- 程序是OS進行資源分配的基本單位,而執行緒是OS進行排程(CPU分配時間)的基本單位