电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Java項目有中多個線程如何查找死鎖

瀏覽:91日期:2022-08-13 08:22:36

當項目有中多個線程,如何查找死鎖?

最近,在IDEA上進行多線程編程中老是在給線程加鎖的時候,總是會遇到死鎖問題,而當程序出現(xiàn)死鎖問題時,編譯器不能精確的顯示錯誤的精確位置。當項目代碼很多的時候, 往往會給自己添加不必要的麻煩,今天,我就分享分享幾個解決方法。

1.編譯環(huán)境

IDEA 2020 ,windows10, jdk8及以上版本

一、死鎖是什么?

死鎖指A線程想使用資源但是被B線程占用了,B線程線程想使用資源被A線程占用了,導(dǎo)致程序無法繼續(xù)下去了。

1.1 死鎖的例子;

public class Deadlock { public static void main(String[] args) {Object lock1 = new Object();Object lock2 = new Object();Thread thread1 = new Thread(new Runnable() { @Override public void run() {synchronized (lock1){ System.out.println('線程一得到了lock1'); try{Thread.sleep(1000); } catch (InterruptedException e) {e.printStackTrace(); } System.out.println('線程一獲取lock2'); synchronized (lock2){System.out.println('線程一得到了lock2'); }} }});thread1.start();Thread thread2 = new Thread(new Runnable() { @Override public void run() {synchronized (lock2){ System.out.println('線程二得到了lock2'); try{//讓線程2,獲取鎖1Thread.sleep(1000); } catch (InterruptedException e) {e.printStackTrace(); } System.out.println('線程二獲取lock1'); //嘗試獲取lock1 synchronized (lock1){System.out.println('線程二得到了lock1'); }} }});thread2.start(); }}

Java項目有中多個線程如何查找死鎖

1.2 死鎖的例子;

形成死鎖的條件:1.互斥條件:(當一個資源被一個線程擁有,當被一個線程擁有后就不能被其他線程所持有)2.請求擁有條件(一個線程所持有一個資源后又試圖請求另一個資源)可修改3.不可剝奪性:(一個資源被一個線程擁有之后,如果這個線程不釋放此資源,那么其他線程不能強制獲得此資源)4.環(huán)路等待條件(多個線程在獲取資源時形成一個環(huán)形鏈)可修改

二、使用jdk內(nèi)置工具檢測死鎖

方法一. jconsole.exe

進入你的jdk安裝路徑中,打開jdk/bin/jconsole.exe使用步驟如下:

Java項目有中多個線程如何查找死鎖

Java項目有中多個線程如何查找死鎖

Java項目有中多個線程如何查找死鎖

檢測結(jié)果:

Java項目有中多個線程如何查找死鎖

方法二. jvisualvm.exe

進入你的jdk安裝路徑中,打開jdk/bin/jvisualvm.exe優(yōu)點:比較細,比較全面缺點:加載有點慢!使用步驟如下:

Java項目有中多個線程如何查找死鎖

Java項目有中多個線程如何查找死鎖

可以在里面看到是該項目代碼的第39行出現(xiàn)了死鎖。

方法三. jmc.exe

進入你的jdk安裝路徑中,打開jdk/bin/jmc.exe優(yōu)點:可以對所以死鎖進行判斷缺點:沒有給出解決方法使用步驟如下:

Java項目有中多個線程如何查找死鎖

三、死鎖解決方法

通過死鎖的形成條件來解決死鎖問題,從根源上消除死鎖。1.請求擁有條件(一個線程所持有一個資源后又試圖請求另一個資源)可修改2.環(huán)路等待條件(多個線程在獲取資源時形成一個環(huán)形鏈)可修改

舉例修改: 方法:(修改環(huán)路等待條件)//讓線程二和線程一競爭同一個鎖,修改為并行,這樣避免出現(xiàn)環(huán)路

public class Deadlock { public static void main(String[] args) {Object lock1 = new Object();Object lock2 = new Object();Thread thread1 = new Thread(new Runnable() { @Override public void run() {synchronized (lock1){ System.out.println('線程一得到了lock1'); try{Thread.sleep(1000); } catch (InterruptedException e) {e.printStackTrace(); } System.out.println('線程一獲取lock2'); synchronized (lock2){System.out.println('線程一得到了lock2'); }} }});thread1.start();Thread thread2 = new Thread(new Runnable() { @Override public void run() {synchronized (lock1){ //讓線程二和線程一競爭同一個鎖,修改為并行,這樣避免出現(xiàn)環(huán)路 System.out.println('線程二得到了lock1'); try{//讓線程2,獲取鎖1Thread.sleep(1000); } catch (InterruptedException e) {e.printStackTrace(); } System.out.println('線程二獲取lock1'); //嘗試獲取lock1 synchronized (lock2){System.out.println('線程二得到了lock2'); }} }});thread2.start(); }}

Java項目有中多個線程如何查找死鎖

四、總結(jié)

到此這篇關(guān)于Java項目有中多個線程如何查找死鎖的文章就介紹到這了,更多相關(guān)Java多線程查找死鎖內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 南京泽朗生物科技有限公司 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] | 粘度计,数显粘度计,指针旋转粘度计 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 钢制暖气片散热器_天津钢制暖气片_卡麦罗散热器厂家 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 股票入门基础知识_股票知识_股票投资大师_格雷厄姆网 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 光纤测温-荧光光纤测温系统-福州华光天锐光电科技有限公司 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 办公室家具公司_办公家具品牌厂家_森拉堡办公家具【官网】 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 江西高职单独招生-江西单招考试-江西高职单招网 | 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 吉祥新世纪铝塑板_生产铝塑板厂家_铝塑板生产厂家_临沂市兴达铝塑装饰材料有限公司 | 「安徽双凯」自动售货机-无人售货机-成人用品-自动饮料食品零食售货机 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 非甲烷总烃分析仪|环控百科 | 深圳办公室装修-写字楼装修设计-深圳标榜装饰公司 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 凝胶成像系统(wb成像系统)百科-上海嘉鹏 | TPU薄膜_TPU薄膜生产厂家_TPU热熔胶膜厂家定制_鑫亘环保科技(深圳)有限公司 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 甲级防雷检测仪-乙级防雷检测仪厂家-上海胜绪电气有限公司 | 黄石东方妇产医院_黄石妇科医院哪家好_黄石无痛人流医院 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 |