JavaSE——多線程

進程和線程:編程

 

進程是指運行中的應用程序,每個進程都有本身獨立的內存空間。一個應用程序能夠啓動多個進程。多線程

線程是指進程中的一個執行流程,有時也稱爲執行情景。併發

 

線程和進程的主要區別在於:每一個進程都須要操做系統爲其分配獨立的內存地址空間,而同一進程中的不一樣線程工做在同一內存空間,這些線程之間能夠互相通訊,共享同一塊內存和系統資源。性能

 

好比,用qq聊天就是一個進程,打字,發語音,雙方互相接受消息就屬於該進程的線程。spa

當一個進程中多個線程同時運行,則稱之爲併發運行。操作系統

 

進程屬於應用程序級別,線程是進程中的一些操做。線程

 

多線程:htm

多線程(英語:multithreading),是指從軟件或者硬件上實現多個線程併發執行的技術。具備多線程能力的計算機因有硬件支持而可以在同一時間執行多於一個線程,進而提高總體處理性能。具備這種能力的系統包括對稱多處理機、多核心處理器以及芯片級多處理(Chip-level multithreading)或同時多線程(Simultaneous multithreading)處理器。[1]  在一個程序中,這些獨立運行的程序片斷叫做「線程」(Thread),利用它編程的概念就叫做「多線程處理(Multithreading)」。具備多線程能力的計算機因有硬件支持而可以在同一時間執行多於一個線程,進而提高總體處理性能。進程

 

但必須注意一個問題:共享資源!若是有多個線程同時運行,並且它們試圖訪問相同的資源,就會遇到一個問題。舉個例子來講,兩個線程不能將信息同時發送給一臺打印機。爲解決這個問題,對那些可共享的資源來講(好比打印機),它們在使用期間必須進入鎖定狀態。因此一個線程可將資源鎖定,在完成了它的任務後,再解開(釋放)這個鎖,使其餘線程能夠接着使用一樣的資源。ip

 

多線程是爲了同步完成多項 任務,不是爲了提升運行效率,而是爲了提升 資源使用效率來提升系統的效率。線程是在同一時間須要完成多項 任務的時候實現的。
最簡單的比喻多線程就像火車的每一節 車箱,而進程則是火車。車箱離開 火車是沒法跑動的,同理火車也不可能只有一節車箱。多線程的出現就是爲了提升效率。同時它的出現也帶來了一些問題。
 
一個採用了 多線程技術應用程序能夠更好地利用 系統資源。其主要優點在於充分利用了CPU的空閒 時間片,能夠用盡量少的時間來對用戶的要求作出響應,使得 進程的總體運行效率獲得較大提升,同時加強了 應用程序的靈活性。更爲重要的是,因爲同一 進程的全部線程是共享同一 內存,因此不須要特殊的 數據傳送機制,不須要創建共享存儲區或共享文件,從而使得不一樣 任務之間的協調操做與運行、數據的交互、資源的分配等問題更加易於解決。
相關文章
相關標籤/搜索