多執行緒學習一(執行緒、程序基本概念理解)
阿新 • • 發佈:2018-12-21
執行緒是程序中的實體,一個程序可以擁有多個執行緒,一個執行緒必須有一個父程序。執行緒不擁有系統資源,只有執行必須的一些資料結構;它與父程序的其它執行緒共享該程序所擁有的全部資源。執行緒可以建立和撤消執行緒,從而實現程式的併發執行。
執行緒也有就緒、阻塞和執行三種基本狀態。就緒狀態是指執行緒具備執行的所有條件,邏輯上可以執行,在等待處理機;執行狀態是指執行緒佔有處理機正在執行;阻塞狀態是指執行緒在等待一個事件(如某個訊號量),邏輯上不可執行。
執行緒特點:輕型實體、獨立排程和分派的基本單位、可併發執行、共享程序資源。
在單個程式中同時執行多個執行緒完成不同的工作,稱為多執行緒。
程序是資源分配的基本單位。所有與該程序有關的資源,都被記錄在 程序控制塊PCB中。以表示該程序擁有這些資源或正在使用它們。
對於執行緒同步,在具體的Java程式碼中需要完成以下兩個操作:把競爭訪問的資源標識為private;同步哪些修改變數的程式碼,使用synchronized關鍵字同步方法或程式碼。當然這不是唯一控制併發安全的途徑。
程序可以支援多個執行緒,它們看似同時執行,但互相之間並不同步。一個程序中的多個執行緒共享相同的記憶體地址空間,這就意味著它們可以訪問相同的變數和物件,而且它們從同一堆中分配物件。儘管這讓執行緒之間共享資訊變得更容易,但您必須小心,確保它們不會妨礙同一程序裡的其它執行緒。Java 執行緒工具和 API看似簡單。但是,編寫有效使用執行緒的複雜程式並不十分容易。因為有多個執行緒共存在相同的記憶體空間中並共享相同的 變數,所以您必須小心,確保您的執行緒不會互相干擾。