多線程鎖和反射的再次理解


只有對象纔有鎖,一個對象有且只有一把鎖。
  只能使用對象的鎖去同步,且只能同步方法/代碼塊,而不能同步變量和類;

  同步損害併發性,應儘可能縮小同步範圍。

注意:同步代碼塊與同步方法的區別  一個類中要同步多個方法時都使用,爲了避免鎖的衝突,必然需要使用不同的對象,要使用同步代碼塊,方法

         多個類中使用同一個瑣,也必須用同步代碼庫方法。

  分類  1代碼塊鎖,2方法鎖 同步整個方法的鎖 :

             (this當前對象鎖 , 靜態類對象鎖其實系統中並不存在什麼類鎖。當一個同步靜態方法被調用時,系統獲取的其實就是代表該類的類對象的對象鎖)。

             在Java多線程編程中,最常見的synchronized關鍵字實際上是依靠對象鎖的機制來實現線程同步的。我們似乎可以聽到synchronized在向我們說:“給我一把 鎖,我能創造一個規矩”。
  死鎖  多線程死鎖是因爲 出現了互斥鎖 互斥鎖 即當前的動作需要未來作爲驅使條件,而未來又是沒有實現的,即用一個不存在的條件驅使當前的動作,則必然死鎖。

 反射 反射就是吧java類中的各種成分映射成相應的java類.

Class類---》類的類- 》
獲得對象就是當前類
方法的類----》獲得對象個對象即當前方法
成員變量的類-----》
獲得對象即是當前成員變量
!!!!!每個自定義的類都是Class類的一個對象。

在一個運行的程序中,會有許多類和接口存在。我們就用Class這個來來表示對這些類和接口的抽象
,而Class類的每個實例則代表運行中的一個類。例如,運行的程序有A、B、C三個類,那麼Class類就是對A、B、C三個類的抽象。
所謂抽象,就是提取這些類的一些共同特徵,比如說這些類都有類名,都有對應的hashcode,
可以判斷類型屬於class、interface、enum還是annotation。這些可以封裝成Class類的域,
另外可以定義一些方法,比如獲取某個方法、獲取類型名等等。這樣就封裝了一個表示類型的類。(type)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章