/*通過驗證發現 同步函式如果被靜態修飾後,不再以this 為鎖
靜態進記憶體時,記憶體中沒有本類物件,但是一定有該類的位元組碼檔案物件
類名.class 該物件的型別是class
靜態的同步方法,使用的鎖是該方法所在類的位元組碼檔案物件。類名.class
*/class ticket implements runnable
catch(exception e){}
system.out.println(thread.currentthread().getname() +" ..code..."+ tick--);}}
}} else
while(true)
show(); }
public static synchronized void show()//靜態同步函式 該類對應的位元組碼檔案物件為鎖
catch(exception e){}
system.out.println(thread.currentthread().getname() +" .....show..."+ tick--);
} }}
class staticlockdemo
catch(exception e){}//讓主線程睡眠40毫秒 保證第乙個執行緒先開始執行 且標誌位改變
t2.start();
}}
多執行緒 同步函式使用的鎖是this
同步函式用的是哪乙個鎖呢?函式需要被物件呼叫。那麼函式都有乙個所屬物件引用。就是this。所以同步函式使用的鎖是this。通過程式進行驗證 需求 使用兩個執行緒來買票。乙個執行緒在同步 塊中。乙個執行緒在同步函式中。都在執行買票動作。package com.tan class ticket impl...
多執行緒 驗證同步函式的鎖是this
同步函式的使用的鎖是this 同步函式和同步 塊的區別 同步函式的鎖是固定的this。同步 塊的鎖是任意的物件。建議使用同步 塊。class ticket implements runnable catch interruptedexception e system.out.println thre...
多執行緒靜態同步函式
多執行緒靜態同步函式和非靜態同步函式的區別是啥?靜態同步函式 就是方法使用了static關鍵字修飾 非靜態同步函式 沒有用static關鍵字修飾的方法,也就是使用this鎖的同步函式 那麼靜態同步函式使用的啥鎖呢?分析 兩個執行緒,乙個執行緒使用靜態同步函式,乙個使用同步 塊this鎖,如果執行緒不...