模擬線程死鎖

2021-08-24 21:51:31 字數 1050 閱讀 5005

[b][color=blue]synchronized 特點[/color]:[/b] 兩個synchronized 方法,當乙個執行緒已經獲取鎖定,其它執行緒就不能再執行[color=red][b]同一例項[/b][/color]的synchronized 方法.

[b][color=red]非[/color][/b]synchronized 方法可以執行.

下面開始模擬死鎖現象

package com.apq.deadlock;

//餐具類

class tableware

public string tostring()

}class eaterthread extends thread

public void run()

}private void eat() }}

}public class main

}

[size=medium]結果:[/size]

apq抱著匙子不放,bob抱著叉子不放,誰也不能吃了

apq 左手拿了 [ 匙子 ]

apq 右手拿了 [ 叉子 ]

吃...

apq 左手拿了 [ 匙子 ]

bob 左手拿了 [ 叉子 ]

[size=medium]把鎖的粒度加大些,可以避免死鎖[/size]

package com.apq.deadlock;

//餐具類

class tableware

public string tostring()

}class pair

public string tostring()

}class eaterthread extends thread

public void run()

}private void eat() catch (interruptedexception e) }}

}public class main1

}

5 模擬線程切換

模擬 windows執行緒切換 threadswitch 正在執行的執行緒在kpcr裡,等待的執行緒在等待鍊錶中,排程中的執行緒在那32個排程鍊錶中。建立它是從下標1的位置開始存的而不是0,因為main需要乙個執行緒。建立的執行緒還不能排程還需要初始化的環境,暫存器的值 當前執行緒的堆疊要確定 模擬...

C語言 模擬線程池

題目 執行緒池 是一種多工處理模型,由乙個任務佇列和若干工作執行緒組成 任務佇列 任務佇列包含若干任務 1.每個任務包含指向任務資料的指標和處理該任務的函式指標 2.可以向任務佇列追加新任務 工作執行緒 每個工作執行緒執行乙個任務佇列處理函式 1.核心功能是從佇列中獲取乙個可用任務 1.如果佇列中有...

nodejs 模擬非同步執行,模擬線程暫停

模擬非同步執行,模擬線程暫停,這裡使用了 es7 中的async 和 await,如下 1 模擬線程暫停 2 const sleep function time time 7 8return promise 9 1011 async function asynctest i 16 i 17 awai...