Java多線程編程——為什麼需要多線程編程

來源:互聯網
上載者:User

談到為什麼需要多線程編程,可能需要從並發這個概念的曆史來說起。

在很久以前,電腦並沒有作業系統,同一個時刻他們只能執行一個單獨的程式,而且這些程式直接存取所有的電腦資源。在電腦剛面世的那個年代,程式的這種處理方式其實並沒有什麼不對。但是隨著電腦以及軟體的快速發展,作業系統以及多核處理器的誕生,這使得同一時刻只處理一個任務讓電腦的效率變得很低,並且不能充分發揮電腦的能力,達到充分利用電腦資源的效果。所以同時執行多個程式就成為了必然。那麼電腦同時執行多個程式會有那些優勢呢。

資源的利用:程式有時候需要等待外部的操作,比如輸入和輸出,並且在等待的過程中不能做任何有價值的工作。在程式等待的過程中讓另外的程式運行會提高效率。

公平競爭:多個使用者和程式對系統資源擁有平等的權利。讓它們通過更好的時間片方式來共用電腦,這要比結束一個程式後再開始下一個程式更可取。

方便處理:寫多個程式並且讓每個程式單獨處理任務然後進行必要的協調要比寫一個單獨的程式來處理所有的任務更容易且更讓人滿意。

為了充分利用系統資源,讓多個程式在同時啟動並執行過程中公平競爭資源,充分利用電腦的處理能力,這有力的促進了進程以及線程的發展。線程允許程式控制流程中的多個資料流同時存在於同一個進程中。他們共用進程範圍內的記憶體以及檔案控制代碼等資源,但是每個線程有它自己的程式計數器、棧、局部變數。線程也為多處理器系統中並行的使用硬體提供了一個自然而然的分解;同一個程式的多個線程可以在多個CPU的情況下同時調度。

線程的簡單介紹

線程也成為輕量級的進程,並且現在大多數的作業系統都將線程作為基本的調度單元。在沒有顯示調度的情況下,每個線程都是同時且非同步執行。由於線程共用他們所在的進程的記憶體位址空間,在執行過程中所有的線程都可能訪問相同的變數並在同一個堆上指派至,這相對於處理序間通訊(inner-process)機制來說,它提供了更細粒度的資料共用機制。但是對於共用的資料如果沒有顯示的同步機制,一個線程可能修改另一個線程正在修改的變數,這將會導致意外的結果。

因為程式調度的基本單元是線程,一個單線程應用程式一次只能運行在一個處理器上。在雙處理器系統中,一個單線程程式,放棄了其中一半的空閑CPU資源;在擁有100個處理器的系統中,這個單線程程式放棄了99%的資源。從另一方面來看,擁有多個活躍線程的程式可以同時在多處理器上運行。早設計良好的情況下,多線程程式通過更有效利用空閑處理器資源,來提高輸送量。

使用多線程也可以協助我們在單一處理器系統中實現更佳的輸送量。如果一個程式是單線程的 ,這個處理器在等待一個同步I/O操作完成的時候,仍然是閒置。在一個多線程程式中,當一個線程等待I/O結束的同時,另一個線程也可以運行,這樣就使得應用程式在遇到I/O阻塞時仍然有進展。

相對於需要同時管理多種類型的任務,一個順序處理相同類型任務的程式,寫起來簡單,更少出錯,也更容易測試。在類比情況下,為每一個類型的任務分配一個線程,或者為每一個元素分配一個線程,提供理想上的順序,並且這樣做可以把域邏輯與時序調度的細節隔絕開來,進行相互交替的操作,進行非同步I/O,以及等待資源。一個複雜,非同步流程可以被分解為一系列更簡單的同步流程,他們中每一個在相互獨立的線程中運行,只有在特定的同步點才進行彼此間的互動。

多線程編程給我們帶來了很多的優勢,它讓我們的應用能夠同時做多件事情,但是在開發多線程應用時,我們需要注意的問題有很多,比如線程同步、線程間通訊、線程死結等等,後續我們會將更深入的討論這些問題,一起學起,一起成長。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.