1. 程式人生 > >java併發程式設計之背景知識

java併發程式設計之背景知識

本文為學習java併發程式設計的學習筆記。交流心得。

想要了解java併發程式設計,首先要了解程序和執行緒的關係。

程序的概念和特點

我們自己寫的程式,也就是所謂的使用者程式是由作業系統來管理的,人們把一個執行著的程式叫做一個程序(英文名:Process),每個程序都有這麼兩個特點:

  • 資源所有權:如記憶體、I/O,這些不能再執行緒間共享。
  • 排程/執行:作業系統為程序分配時間片,排程程序被處理。

程序的狀態

在作業系統級別上,程序根據它執行的情況,可以分成下邊5種狀態:
程序的狀態

序列程式設計和並行程式設計

序列程式設計:目前我們接觸的大部分程式設計都是序列程式設計,也就是處理器執行完一條指令,再去執行另一條指令。
並行程式設計:就是我們去開幾個程序同時執行。

執行緒的概念

程序下又分解出很小任務,比如你打開了個遊戲,這是一個程序,遊戲同時有很多小任務,我們稱之為執行緒。

執行緒和程序的一些關係

程序的兩個特點,一是對資源的所有權,二是可以作為作業系統排程和執行的單位,這兩個特點是沒有關係的,也就是說獨立的,現代的好多作業系統已經把這兩個特點給拆開了,可以被排程和執行的單位通常被稱作執行緒或者輕量級程序,而擁有資源所有權的單位通常被稱為程序。

一個程序至少對應一個執行緒。