最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 多線程死鎖詳解及簡單實(shí)例

 更新時(shí)間:2017年01月18日 15:07:45   投稿:lqh  
這篇文章主要介紹了java 多線程死鎖詳解及簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下

java 多線程死鎖

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

    (1)個(gè)人使用鎖的經(jīng)驗(yàn)差異
    (2)模塊使用鎖的差異
    (3)版本之間的差異
    (4)分支之間的差異
    (5)修改代碼和重構(gòu)代碼帶來的差異

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

    (1)忘記釋放鎖

void data_process() 
{ 
  EnterCriticalSection(); 
 
  if(/* error happens */) 
    return; 
 
  LeaveCriticalSection(); 
} 

    (2)單線程重復(fù)申請鎖

void sub_func() 
{ 
  EnterCriticalSection(); 
  do_something(); 
  LeaveCriticalSection(); 
} 
 
void data_process() 
{ 
  EnterCriticalSection(); 
  sub_func(); 
  LeaveCriticalSection(); 
} 

    (3)雙線程多鎖申請

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)環(huán)形鎖申請

/* 
*       A  - B 
*       |   | 
*       C  - D 
*/ 

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

總結(jié):

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

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

相關(guān)文章

  • SpringBoot項(xiàng)目不繼承parent的實(shí)現(xiàn)方案

    SpringBoot項(xiàng)目不繼承parent的實(shí)現(xiàn)方案

    本文介紹了如何在不直接繼承spring-boot-starter-parent的情況下,通過配置dependencyManagement和spring-boot-maven-plugin來實(shí)現(xiàn)SpringBoot項(xiàng)目的功能,關(guān)鍵包括版本管理、基礎(chǔ)配置和插件配置,并討論了適用場景和注意事項(xiàng),需要的朋友可以參考下
    2025-10-10
  • Java Annotation注解相關(guān)原理代碼總結(jié)

    Java Annotation注解相關(guān)原理代碼總結(jié)

    這篇文章主要介紹了Java Annotation注解相關(guān)原理代碼總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot對數(shù)據(jù)訪問層進(jìn)行單元測試的方法詳解

    SpringBoot對數(shù)據(jù)訪問層進(jìn)行單元測試的方法詳解

    我們公司作為一個(gè)面向銀行、金融機(jī)構(gòu)的TO B類企業(yè),頻繁遇到各個(gè)甲方爸爸提出的國產(chǎn)化數(shù)據(jù)庫的改造需求,包括OceanBase, TiDB,geldenDB等等,本文就介紹一種快高效、可復(fù)用的解決方案——對數(shù)據(jù)訪問層做單元測試,需要的朋友可以參考下
    2023-08-08
  • java冒泡排序簡單實(shí)例

    java冒泡排序簡單實(shí)例

    本文主要介紹了JSONjava冒泡排序?qū)嵗c思路分析。具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • Java-Io-RandomAccessFile任意位置讀寫數(shù)據(jù)的操作小結(jié)

    Java-Io-RandomAccessFile任意位置讀寫數(shù)據(jù)的操作小結(jié)

    RandomAccessFile類支持隨機(jī)訪問方式,可以跳轉(zhuǎn)到文件的任意位置讀寫數(shù)據(jù),這個(gè)類在文件隨機(jī)讀取時(shí)有很大的優(yōu)勢,可利用多線程完成對一個(gè)大文件的讀寫,本文給大家介紹Java-Io-RandomAccessFile(任意位置讀寫數(shù)據(jù))的相關(guān)知識,需要的朋友可以參考下
    2022-05-05
  • Java使用線程實(shí)現(xiàn)異步運(yùn)行的方法

    Java使用線程實(shí)現(xiàn)異步運(yùn)行的方法

    在Java中,實(shí)現(xiàn)異步運(yùn)行的一個(gè)常用方式是使用Thread類,這篇文章主要介紹了Java使用線程實(shí)現(xiàn)異步運(yùn)行,需要的朋友可以參考下
    2024-07-07
  • 淺析Java中的GC垃圾回收器的意義及與GC的交互

    淺析Java中的GC垃圾回收器的意義及與GC的交互

    這篇文章主要介紹了Java中的GC垃圾回收器的意義及與其的交互,GC是Java虛擬機(jī)JVM的一項(xiàng)重要特性,需要的朋友可以參考下
    2015-12-12
  • java后端+前端使用WebSocket實(shí)現(xiàn)消息推送的詳細(xì)流程

    java后端+前端使用WebSocket實(shí)現(xiàn)消息推送的詳細(xì)流程

    后端向前端推送消息就需要長連接,首先想到的就是websocket,下面這篇文章主要給大家介紹了關(guān)于java后端+前端使用WebSocket實(shí)現(xiàn)消息推送的詳細(xì)流程,需要的朋友可以參考下
    2022-10-10
  • SpringBoot中Package打包的實(shí)現(xiàn)小結(jié)

    SpringBoot中Package打包的實(shí)現(xiàn)小結(jié)

    本文詳細(xì)介紹了將SpringBoot項(xiàng)目打包成jar或war,包括jar的默認(rèn)打包、war的內(nèi)嵌tomcat排除和配置,以及部署到外部Tomcat的步驟,適合開發(fā)者理解和實(shí)踐項(xiàng)目部署,感興趣的可以了解一下
    2026-03-03
  • Java Tree結(jié)構(gòu)數(shù)據(jù)中查找匹配節(jié)點(diǎn)方式

    Java Tree結(jié)構(gòu)數(shù)據(jù)中查找匹配節(jié)點(diǎn)方式

    這篇文章主要介紹了Java Tree結(jié)構(gòu)數(shù)據(jù)中查找匹配節(jié)點(diǎn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論

克山县| 阿坝县| 龙江县| 恩平市| 云南省| 宿松县| 策勒县| 乌审旗| 华坪县| 成武县| 石嘴山市| 东乡县| 西乌珠穆沁旗| 唐河县| 武乡县| 成武县| 互助| 浦县| 巴彦县| 商丘市| 博爱县| 新田县| 历史| 沿河| 许昌市| 莱芜市| 绥江县| 宁武县| 同仁县| 太原市| 张家川| 锦屏县| 额敏县| 安溪县| 肇东市| 乌兰浩特市| 通江县| 石首市| 河津市| 祁阳县| 石林|