博主個人**:
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...