1. 程式人生 > >002 並發的基本概念

002 並發的基本概念

問題 虛擬機 切換 自己的 col java 基礎 數據共享 nbsp

一 . 概述

 並發:

  在單核處理器之中,我們的線程是在CPU之中不斷地切換完成任務,這是單核處理器之中的並發.

  在多核處理器之中,我們的線程是運行的不同的CPU核之中,也就是說,我們的程序是在並行進行的.

    介紹上面的概念的目的就是說,我們的並發需要從硬件的基礎之上來說明,因為JVM完成了指令的重寫和優化,我們如果不知道有優化和重寫的概念,

      根本就不知道並發之中可能會出現問題的地方.


二 .指令重寫

  CPU為了自己的快速運行,會對代碼的運行順序進行調整,也就是說程序的運行並非是按照順序執行的.

    在單核時代,CPU需要保證最終的結果是一致性的.

    但是在多核下,CPU也無法保證這種結果的一致性.因此在並發的情況下,結果出錯的風險會變得更大.


三 java的努力

  java為了保證一致性,在虛擬機的層面上提供了一致性的結果,做出了JVM的規範.

  在這種規範之下,屏蔽了特有系統和硬件的特性問題,按照一致性的處理方式來處理並發.  

    雖然效率不如使用特有命令效率高,但是能保證結果的正確性有保證.

 技術分享圖片

java之中的線程是獨立運行的一個實體,所需要的數據共享變量是從主內存中拷貝出來的一個副本.

當在多線程環境下,每個線程都會有自己的變量副本.

  但是各個線程並不知道其它線程也在操作這個變量副本----------可見性問題.

解決的方式就是同步.

 

 

   

002 並發的基本概念