synchronized最關鍵的就是確定鎖的物件,我認為有兩種,類和物件:
對類的加鎖有兩種方法:
1.public synchronized static void fun(){};
在靜態方法前加上synchronized關鍵字。
2.synchronized(類名.class){};
將加鎖的**塊的鎖的位置,寫上類物件。可以用例項物件.getclass()代替,也可以寫其他類名,不一定是自己的類名。
對例項物件的加鎖也有兩種方法:
1.public synchronized void fun(){};
在方法前加上synchronized關鍵字。
2.synchronized(物件){};
將加鎖的**塊的鎖的位置,寫上例項物件。可以用例項物件this代替,同樣,到底是什麼例項物件,就隨意了,不一定非要自己這個例項物件。
額外要注意的是:
如果對於例項物件的加鎖沒有特殊要求的話,可以使用byte byte = new byte[0];代替,因為這個效率高,其他的需要7條操作碼,他只需3條。
synchronized關鍵字是針對物件而設計的鎖。每個物件只能加一次鎖,一旦該物件被加鎖,即觸發了synchronized的方法或**塊,該物件就必須等這個鎖結束(即對應的**塊或方法執行完畢)才能再次加鎖。
關於Java異常
下圖是異常的種類 1 在執行時產生異常就會丟擲乙個異常。2 可以用try catch 捕獲異常,之後系統會處理系統有能力處理的異常,這時try catch 捕獲異常之後 就可執行了。程式設計師可以在catch 中的大括號裡輸出異常資訊或處理異常 也可以不處理,系統會處理系統能處理的異常 3 當 出現...
Java 關於變數
1.八種基本資料型別,除布林型剩下的七種都可以相互轉換。2.小容量轉換成大容量,稱為自動型別轉換,容量從小到大一次為 byte 任何浮點型不管占用多少個位元組,都比整數型容量大 3.大容量轉換成小容量時,叫做強制型別轉換,需要加強制型別轉換符,程式才能編譯通過,但有時會損失精度,所以謹慎使用。4.b...
關於 java注釋
用於說明 用途,作者,建立時間,輸出引數型別,可能丟擲的異常,返回值 注釋量要佔總 量20 以上引數的型別 如下 main方法是一切程式執行的入口 author 趙濤 since 201811 11 param args string 輸出引數型別為字串陣列,引數名字為args return 無返回...