一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 多線程死鎖詳解及簡單實例

java 多線程死鎖詳解及簡單實例

2020-07-28 14:30java教程網 Java教程

這篇文章主要介紹了java 多線程死鎖詳解及簡單實例的相關資料,需要的朋友可以參考下

java 多線程死鎖

  相信有過多線程編程經驗的朋友,都吃過死鎖的苦。除非你不使用多線程,否則死鎖的可能性會一直存在。為什么會出現死鎖呢?我想原因主要有下面幾個方面:

    (1)個人使用鎖的經驗差異
    (2)模塊使用鎖的差異
    (3)版本之間的差異
    (4)分支之間的差異
    (5)修改代碼和重構代碼帶來的差異

    不管什么原因,死鎖的危機都是存在的。那么,通常出現的死鎖都有哪些呢?我們可以一個一個看過來,

    (1)忘記釋放鎖

?
1
2
3
4
5
6
7
8
9
void data_process()
{
  EnterCriticalSection();
 
  if(/* error happens */)
    return;
 
  LeaveCriticalSection();
}

    (2)單線程重復申請鎖

?
1
2
3
4
5
6
7
8
9
10
11
12
13
void sub_func()
{
  EnterCriticalSection();
  do_something();
  LeaveCriticalSection();
}
 
void data_process()
{
  EnterCriticalSection();
  sub_func();
  LeaveCriticalSection();
}

    (3)雙線程多鎖申請

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void data_process1()
{
  EnterCriticalSection(&cs1);
  EnterCriticalSection(&cs2);
  do_something1();
  LeaveCriticalSection(&cs2);
  LeaveCriticalSection(&cs1);
}
 
void data_process2()
{
  EnterCriticalSection(&cs2);
  EnterCriticalSection(&cs1);
  do_something2();
  LeaveCriticalSection(&cs1);
  LeaveCriticalSection(&cs2);
}

    (4)環形鎖申請

?
1
2
3
4
5
/*
*       A  - B
*       |   |
*       C  - D
*/

    假設有A、B、C、D四個人在一起吃飯,每個人左右各有一只筷子。所以,這其中要是有一個人想吃飯,他必須首先拿起左邊的筷子,再拿起右邊的筷子。現在,我們讓所有的人同時開始吃飯。那么就很有可能出現這種情況。每個人都拿起了左邊的筷子,或者每個人都拿起了右邊的筷子,為了吃飯,他們現在都在等另外一只筷子。此時每個人都想吃飯,同時每個人都不想放棄自己已經得到的一那只筷子。所以,事實上大家都吃不了飯。

總結:

    (1)死鎖的危險始終存在,但是我們應該盡量減少這種危害存在的范圍
    (2)解決死鎖花費的代價是異常高昂的
    (3)最好的死鎖處理方法就是在編寫程序的時候盡可能檢測到死鎖
    (4)多線程是一把雙刃劍,有了效率的提高當然就有死鎖的危險
    (5)某些程序的死鎖是可以容忍的,大不了重啟機器,但是有些程序不行

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男男gaygays国内 | 成 人 免费 小说在线观看 | 精油按摩日本 | 美女尿口照片 | 被肉日常np高h | 女同志freelesvoices| 男男按摩1069gⅴ | 日本海鸣馆 | 亚洲国产精品日本无码网站 | 高清在线观看免费入口 | 成人中文字幕在线高清 | 国产精品天天看天天爽 | 啊啊啊好大好爽视频 | 视频一区二区三区欧美日韩 | 国产 日韩 欧美视频二区 | 久久青草费线频观看国产 | 日韩精品福利视频一区二区三区 | 99精品视频一区在线观看miya | 国产自产自拍 | 男同桌脱我奶罩吸我奶作文 | 国内在线观看 | 欧美男男gaygayxxx | 日韩毛片网 | 日韩精品一区二区 | 久久精品国产亚洲AV麻豆欧美玲 | 99精品视频在线观看免费 | 男gay网站视频免费观看 | 亚洲国产影院 | 4hu四虎永久网址 | 亚洲国产精品综合福利专区 | 亚洲网红精品大秀在线观看 | 久久精品黄AA片一区二区三区 | 国产精品麻豆久久99 | 亚洲AV无码国产精品午夜久久 | 极品主播的慰在线播放 | 成人伊人亚洲人综合网站222 | 国产欧美精品专区一区二区 | 96萝莉| 大妹子最新视频在线观看 | 美国女艳星brandilove | 拔插拔插.com |