1. 程式人生 > >Java的並發和多處理器的並行的理解

Java的並發和多處理器的並行的理解

ava 基本 分配 進程 處理器 而且 每一個 如果 級別

在計算機編程中,有一個基本概念,就是在同一時刻處理多個任務的思想。

許多程序設計,需要程序能停下正在做的工作,轉而處理其他問題,然後返回主進程。

首先,我們先理清一下並行和並發的關系:

並行是指,同一時刻處理多個任務,並發是指多個可獨立運行的任務,彼此在某一段時間內獨立有序運行。

實現:

最初,程序員們用所掌握的有關機器底層的知識來編寫中斷服務程序,主進程的掛起是通過硬件中斷來觸發的,但難度太大,而且不能移植。中斷對於時間性強的任務是必須的,但對於大量的其他問題,我們只是想把問題切分成多個可獨立運行的部分(任務),從而提高程序的響應能力。在程序中,這些彼此獨立運行的部分稱之為線程。

通常,線程只是一種為單一處理器分配執行時間的手段,但是,如果操作系統支持多處理器,

那麽每一個任務都可以被指派給不同的處理器,並且它們是真正的並行執行(而不是某一時間段內)

在語言級別上,多線程所帶來的便利,便是程序員不用操心機器上是多個處理器還是一個處理器,

由於程序在邏輯上被分為線程,所以如果機器有多個處理器,那麽不需要特殊調整程序就能執行的更快。

並發的隱患:共享資源

多個並行任務都要訪問同一個資源的時候,為某個任務鎖定資源,完成後,釋放資源,供其他任務使用。

Java的並發和多處理器的並行的理解