1. 程式人生 > >Java並發知識概述

Java並發知識概述

實例 更新 私有 經歷 java 步驟 技術 線程 意圖

1.Java內存模型的抽象結構

  Java中,所有的實例、靜態域和數組元素都存儲在堆內存中,堆內存是線程共享的。局部變量,形參,異常處理參數不會在線程之間共享,所以不存在內存可見性問題,也就不受內存模型的影響。

  Java之間的通信由JMM控制,JMM決定一個線程對共享變量的寫入何時對另一個線程可見。 JMM定義了線程和主內存之間的抽象關系: 線程之間的共享變量存儲在主內存中,每個線程都有一個私有的本地內存,本地內存中存儲了該變量讀、寫共享變量的副本,本地內存只是JMM的一個抽象的概念,並不真實存在。JMM抽象示意圖如下所示:

  技術分享

  如果線程A和線程B之間要通信的話,需要經歷下面兩個步驟:

  (1)線程A把本地內存A中更新過的共享變量刷新到主內存中去;

  (2)線程B到主內存中去讀取線程A之前已更新過的共享變量;

  

Java並發知識概述