C 模擬死鎖問題

2021-04-12 20:26:56 字數 995 閱讀 6128

///

/// 模擬學生作筆記,假設乙個學生只有同時擁有筆記本和筆才能學習,

/// 這裡模擬2個學生,但只有1個筆記本和乙隻筆

/// 如果想進行學習,需同時獲得筆記本和筆,當a同學獲得筆記本時,

/// b也已獲得筆,此時,a試圖獲得b的筆,而b試圖獲得a的筆記本,

/// 此時便發生死鎖

///

using

system;

using

system.collections.generic;

using

system.text;

using

system.threading;

namespace

threadtest

}public

class

tool

}class

student

public

void

run()

private

void

study()

get  

", name,tool1.name);

lock

(tool2)

//得到並鎖住工具2

get  

", name, tool2.name);                    

console.writeline(

" will study

", name);

//得到工具並學習

console.writeline(

" dorp  

", name, tool1.name);  

//釋放工具1

}console.writeline(

" dorp  

", name, tool2.name);   

//釋放工具2}}

}}執行結果:

a get  book

b get  pen

使用java執行緒模擬死鎖

原文 當兩個或多個執行緒之間同時等待對方釋放資源的時候就會形成執行緒之間的死鎖 當兩個執行緒被阻塞,每個執行緒在等待另乙個執行緒時就發生死鎖 當多個執行緒等待乙個物件鎖時,沒有獲取到鎖的執行緒將發生阻塞。執行緒的阻塞 1.sleep 方法 sleep 允許指定以毫秒為單位的一段時間作為引數,它使得執...

mysql怎麼模擬死鎖 mysql 模擬產生死鎖

場景描述 在update表的時候出現deadlockloserdataacces ception異常 deadlock found when trying to get lock try restarting transaction.問題分析 這個異常並不會影響使用者使用,因為資料庫遇到死鎖會自動回...

乙個模擬死鎖的多執行緒

package org.kevinlifeng public class testdeadlock implements runnable catch interruptedexception e t1嘗試鎖o2 可o2 已經被t2 給鎖住了還沒釋放,一直等待 synchronized o2 到了這...