1. 程式人生 > >Java程式設計思想 第四版(手碼原書+菜鳥筆記) 第一章 1.12 併發程式設計

Java程式設計思想 第四版(手碼原書+菜鳥筆記) 第一章 1.12 併發程式設計

文中筆記均為個人觀點,如有錯誤請大家不吝指出,謝謝! 原書為《java程式設計思想 第四版 中文版》

在計算機程式設計中有一個基本概念,就是在同一時刻處理多個任務的思想。 許多程式設計問題都要求,程式能夠停下正在做的工作,轉而處理某個其他問題,然後再返回主程式。有許多方法可以實現這個目的。最初,程式設計師們用所掌握的有關機器底層的知識來編寫中繼服務程式,主程序的掛起是通過硬體中繼來觸發的。儘管這麼做可以解決問題,但是其難度太大,而且不能移植,所以使得將程式移植到新型號的機器上時,既費時又費力。 有時中繼對於處理時間性強的任務是必需的,但是對於大量的其他問題,我們只是想把問題切分成多個可獨立執行的部分(任務),從而提高程式的響應能力。在程式中,這些彼此獨立執行的部分稱之為執行緒,上述概念被稱為“併發”。併發最常見的例子就是使用者介面。通過使用任務,使用者可以在按下按鈕後快速得到一個響應,而不用被迫等待到程式完成當前任務為止。 通常,執行緒只是一種為單一處理器分配執行時間的手段。但是如果作業系統支援多處理器,那麼每個任務都可以被指派給不同的處理器,並且他們是在真正地並行執行。在語言級別上,多執行緒所帶來的便利之一便是程式設計師不用再操心機器上是有多個處理器還是隻有一個處理器。由於程式在邏輯上被分為執行緒,所以如果機器擁有多個處理器,那麼程式不需要特殊調整也能執行得很快。 所有這些都使得併發看起來相對簡單,但是有一個隱患:共享資源。如果有多個並行任務都要訪問同一項資源,那麼就會出問題。例如,兩個進場不能同時向一臺列印機發送訊息。為了解決這個問題,可以共享的資源,例如印表機,必須在試用期間被鎖定。因此,整個過程是:某個任務鎖定某項資源,完成其任務,然後釋放資源鎖,使其他任務可以使用這項資源。 Java的併發是內置於語言中的,Java SE5已經增添了大量額外的庫支援。

文中會出現,如錯字、語句不通、理解偏差等問題,請及時聯絡或在下方評論指出。我也會盡量按照原書將內容呈獻給大家,謝謝!