靜態同步函式

2022-10-11 17:03:11 字數 774 閱讀 4130

什麼是靜態同步函式?

方法上加上static關鍵字,使用synchronized 關鍵字修飾 或者使用類.class檔案。

靜態的同步函式使用的鎖是  該函式所屬位元組碼檔案物件

可以用 getclass方法獲取,也可以用當前  類名.class 表示。

public

static

void

sale()

}}

總結:synchronized 修飾方法使用鎖是當前this鎖。

synchronized 修飾靜態方法使用鎖是當前類的位元組碼檔案

可以證明:(兩個執行緒在執行 拿到的鎖不一樣)

package

com.toov5.threadsecurity;

class thread009 implements

runnable

catch

(exception e)

if (traincount > 0) }}

} else}}

}public

static

synchronized

void

sale()

catch

(exception e)

if (traincount > 0)

}}public

class

test009

}

肯定不能同步的

乙個用的當前位元組碼檔案 乙個用的this 

靜態同步函式

package com.runnabledemo 同步函式被靜態修飾後,它使用是鎖是該函式所屬類的位元組碼檔案物件 類名.class,該物件的型別是class。靜態進入記憶體時,記憶體中沒有該類的物件,但一定有該類對應的位元組碼檔案物件,這個物件是唯一的。public class threadrun...

靜態同步函式

什麼是靜態同步函式?方法上加上static關鍵字,使用synchronized 關鍵字修飾 或者使用類.class檔案。靜態的同步函式使用的鎖是 該函式所屬位元組碼檔案物件 可以用 getclass方法獲取,也可以用當前 類名.class 表示。public static void sale 總結 ...

多執行緒靜態同步函式

多執行緒靜態同步函式和非靜態同步函式的區別是啥?靜態同步函式 就是方法使用了static關鍵字修飾 非靜態同步函式 沒有用static關鍵字修飾的方法,也就是使用this鎖的同步函式 那麼靜態同步函式使用的啥鎖呢?分析 兩個執行緒,乙個執行緒使用靜態同步函式,乙個使用同步 塊this鎖,如果執行緒不...