2010/01/13

Java Concurrency(2)

Processes和Threads

在concurrent programming裡,有兩種基本的執行單位:processes以及threads,在討論concurrent programming
裡我們大部分會關心threads,然而processes也一樣重要。

一個電腦系統通常有很多在活動的processes跟threads,無論是單核還是多核的機器上。處理時間在單核上是被分享在每
一個processes及threads透過OS稱作時間切割(time slicing)

這變成大多數的電腦系統擁有多處理器或是處理器使用多重執行核心,不過無論是單核還是多核,Concurrency都很重要

Processes

一個process有自我包含的執行環境,一個proces通常有著完整、私有的基本時間資源集合(private set of basic run-time resources)
,每個process有著他自己的記憶體空間。

Processes通常是程式或是應用程式的同義字,然而使用者所看到的單一應用程式其實可能是數個互相合作的proceses
,為了要增強每個processes之間的通訊效能,大多數的OS支援Inter Process Communication(IPC)資源,例如
pipes以及sockets,IPC不只被用在同一個系統上的processes之間的互相通訊,也用在不同的系統上

Threads

Threads有時候被稱作為輕型proceses,proceses以及threads都提供一個執行環境,但是製造出一個thread比
製造出一個process耗的資源來的少。

Threads存在則process存在,所有process至少有一個thread,threads分享process的資源,包含記憶體和所開
的檔案,這可以增加溝通效率,但是這卻有潛在的問題。

Multithreaded execution是一個Java平台上重要的特徵,所有的應用程式至少有一個thread或是更多個,如果你
計算那些記憶體管理、訊號處理的系統threads的話,但是從應用程式設計者的角度來看,應該只有從一個thread開始,
就是所謂的main thread,這個thread有能力製造出其他的threads,在下一個部份我們將會介紹。

參考網址:
http://java.sun.com/docs/books/tutorial/essential/concurrency/procthread.html

No comments:

Post a Comment