什麼是靜態同步函式?
方法上加上static關鍵字,使用synchronized 關鍵字修飾 或者使用類.class檔案。
靜態的同步函式使用的鎖是 該函式所屬位元組碼檔案物件
可以用 getclass方法獲取,也可以用當前 類名.class 表示。
publicstatic
void
sale()
}}
總結:synchronized 修飾方法使用鎖是當前this鎖。
synchronized 修飾靜態方法使用鎖是當前類的位元組碼檔案
可以證明:(兩個執行緒在執行 拿到的鎖不一樣)
packagecom.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鎖,如果執行緒不...