利用synchronized關鍵字了解死鎖

2021-10-03 01:15:08 字數 832 閱讀 6421

博主個人**:

package com.zhengling.work;

public

class

deadlock

catch

(interruptedexception e)

p2.start()

;//o2物件鎖已經被p2執行緒拿走(沒有被歸還)p2接著去拿o1物件鎖,o1物件鎖線程p1一直未歸還;

//所以就出現了死鎖;p1物件只有拿到o2物件鎖後和解除鎖定o2後,才能繼續往下走,歸還o1的

//物件鎖;但o2物件鎖已經被p2執行緒拿走,p2執行緒同樣的 待拿到o1物件鎖後 才能往下走,

//歸還o1、o2的物件鎖}}

class

processor1

extends

thread

public

void

run(

)catch

(interruptedexception e)

synchronized

(str2)}}

}class

processor2

extends

thread

public

void

run(

)catch

(interruptedexception e)

synchronized

(str1)}}

}

上面** 就是非常簡單的死鎖案例,平時寫**時一定要注意,如果鎖定多個物件,確認是否和其他執行緒形成死鎖;可以利用優先順序來確定鎖定的目標或拿到鎖的順序。

關於java的synchronized關鍵字

synchronized最關鍵的就是確定鎖的物件,我認為有兩種,類和物件 對類的加鎖有兩種方法 1.public synchronized static void fun 在靜態方法前加上synchronized關鍵字。2.synchronized 類名.class 將加鎖的 塊的鎖的位置,寫上類物...

CVE 2018 8373相關利用雜談

前段時間趨勢披露了vbs引擎的在野0day cve 2018 8373,當時中心第一時間披露了該次攻擊和darkhotel的關聯,上週花了段時間將該漏洞的exp構造出來,如下所示,目前來看uaf佔位上不是太穩定,後續會繼續改進,構造exp的時候遇到一些坑,遂找時間記錄一下。利用思路上趨勢的文章中其實...

執行緒synchronized 例子

public class foo public int fix int y return x public class myrunnable implements runnable catch interruptedexception e system.out.println thread.curr...