java併發程式設計之背景知識
阿新 • • 發佈:2018-11-21
本文為學習java併發程式設計的學習筆記。交流心得。
想要了解java併發程式設計,首先要了解程序和執行緒的關係。
程序的概念和特點
我們自己寫的程式,也就是所謂的使用者程式是由作業系統來管理的,人們把一個執行著的程式叫做一個程序(英文名:Process),每個程序都有這麼兩個特點:
- 資源所有權:如記憶體、I/O,這些不能再執行緒間共享。
- 排程/執行:作業系統為程序分配時間片,排程程序被處理。
程序的狀態
在作業系統級別上,程序根據它執行的情況,可以分成下邊5種狀態:
序列程式設計和並行程式設計
序列程式設計:目前我們接觸的大部分程式設計都是序列程式設計,也就是處理器執行完一條指令,再去執行另一條指令。
並行程式設計:就是我們去開幾個程序同時執行。
執行緒的概念
程序下又分解出很小任務,比如你打開了個遊戲,這是一個程序,遊戲同時有很多小任務,我們稱之為執行緒。
執行緒和程序的一些關係
程序的兩個特點,一是對資源的所有權,二是可以作為作業系統排程和執行的單位,這兩個特點是沒有關係的,也就是說獨立的,現代的好多作業系統已經把這兩個特點給拆開了,可以被排程和執行的單位通常被稱作執行緒或者輕量級程序,而擁有資源所有權的單位通常被稱為程序。
一個程序至少對應一個執行緒。