当前位置: 首页 > news >正文

中国建设工程安全管理协会网站免费文档模板素材网站

中国建设工程安全管理协会网站,免费文档模板素材网站,百度提交收录,dede5.7网站搬家目录 1.死锁定义 1.1.代码演示 1.2.使用jconsole/jvisualvm/jmc查看死锁 ①使用jconsole#xff1a;最简单。 ②使用jvisualvm#xff1a;#xff08;Java虚拟机#xff09;更方便#xff0c;更直观#xff0c;更智能#xff0c;更高级#xff0c;是合适的选择。 …目录 1.死锁定义 1.1.代码演示 1.2.使用jconsole/jvisualvm/jmc查看死锁 ①使用jconsole最简单。 ②使用jvisualvmJava虚拟机更方便更直观更智能更高级是合适的选择。 ③使用jmc加载的资源更多需要的时间更长最高级。 2.死锁产生原因 ①互斥条件 ②不可被剥夺条件 ③请求并持有条件 ④环路等待条件 3.如何解决死锁问题 解决死锁方案1破环请求并持有条件 解决死锁方案2破坏环路等待条件/使用顺序锁 1.死锁定义 死锁是指两个或两个以上的执行单元进程/线程/协程Java中没有协程的概念在执⾏过程中由于竞争资源或者由于彼此通信⽽造成的⼀种阻塞的现象若⽆外⼒作⽤它们都将⽆法推进下去。 也就是两个进程/线程/协程拥有锁的情况下⼜在尝试获取对⽅锁从⽽造成程序⼀直阻塞的情况。 一个线程可以拥有多把锁但一把锁同一时间只能被一个线程所占用。 1.1.代码演示 import java.util.concurrent.TimeUnit;/*** 死锁示例*/ public class Thread18 {public static void main(String[] args) {Object lockA new Object();Object lockB new Object();Thread t1 new Thread(() - {//1.占有一把锁(锁A)synchronized (lockA){System.out.println(线程1获得锁A);//因为线程的执行是不可控的。中间设置空档期休眠1s让线程2有时间先占有锁B线程1得到锁B的速度不能大于线程2得到锁B的速度try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}//2.尝试获取线程2的锁Bsynchronized (lockB){System.out.println(线程1获得锁B);}}});t1.start();Thread t2 new Thread(() - {//1.占有一把锁(锁B)synchronized (lockB){System.out.println(线程2获得锁B);//休眠1s(保证线程1有充足的时间得到锁A)try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}//2.尝试获取线程1的锁Asynchronized (lockA){System.out.println(线程2获得锁A);}}});t2.start();} }1.2.使用jconsole/jvisualvm/jmc查看死锁 ①使用jconsole最简单。 ②使用jvisualvmJava虚拟机更方便更直观更智能更高级是合适的选择。 都在同一级目录。 ③使用jmc加载的资源更多需要的时间更长最高级。 2.死锁产生原因 ①互斥条件 ⼀个资源锁同一时间只能被⼀个线程占有当这个资源被占⽤之后其他线程就只能等待。 ②不可被剥夺条件 当⼀个线程不主动释放资源时此资源⼀直被拥有线程占有。 ③请求并持有条件 线程已经拥有了⼀个资源之后又尝试请求新的资源。 ④环路等待条件 产⽣死锁⼀定是发⽣了线程资源环形链。 这四个因素缺一不可共同导致了死锁。 3.如何解决死锁问题 改变死锁中的任意⼀个或多个条件就可以解决死锁的问题其中可以被修改的条件只有后两个请求并持有条件和环路等待条件人为控制可被打破可被修改前两个条件都是系统设定的。 解决死锁方案1破环请求并持有条件 import java.util.concurrent.TimeUnit;/*** 解决死锁方案破环请求并持有条件*/ public class UnDeadLock1 {public static void main(String[] args) {Object lockA new Object();Object lockB new Object();Thread t1 new Thread(() -{synchronized (lockA){System.out.println(线程1得到了锁A);//业务代码...try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {} // synchronized (lockB){ // System.out.println(线程1得到了锁B); // //业务代码... // System.out.println(线程1释放了锁B); // }System.out.println(线程1释放了锁A);}},线程1);t1.start();Thread t2 new Thread(() -{synchronized (lockB){System.out.println(线程2得到了锁B);//业务代码...try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {} // synchronized (lockA){ // System.out.println(线程2得到了锁A); // //业务代码... // System.out.println(线程2释放了锁A); // }System.out.println(线程2释放了锁B);}},线程2);t2.start();} }解决死锁方案2破坏环路等待条件/使用顺序锁 import java.util.concurrent.TimeUnit;/*** 解决死锁方案破坏环路等待条件*/ public class UnDeadLock2 {public static void main(String[] args) {Object lockA new Object();Object lockB new Object();Thread t1 new Thread(() -{synchronized (lockA){System.out.println(线程1得到了锁A);//业务代码...try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {}synchronized (lockB){System.out.println(线程1得到了锁B);//业务代码...System.out.println(线程1释放了锁B);}System.out.println(线程1释放了锁A);}},线程1);t1.start();Thread t2 new Thread(() -{synchronized (lockA){System.out.println(线程2得到了锁A);//业务代码...try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {}synchronized (lockB){System.out.println(线程2得到了锁B);//业务代码...System.out.println(线程2释放了锁B);}System.out.println(线程2释放了锁A);}},线程2);t2.start();} }
http://www.hkea.cn/news/14492539/

相关文章:

  • 创口贴网站模板网站建设捌金手指花总十三
  • 网站备案 网站建设方案书提高网页加载速度的方式
  • 简单响应式网站设计代码如何进行营销型企业网站的优化
  • 深圳网站建设最好网页制作公司南昌
  • 建设创意网站seo推广培训班
  • cms建站系统免费wordpress 去除底部
  • 建立个人网站服务器襄阳网站seo
  • 一个网站大概多少页面网络服务提供者收集和使用个人信息应当符合的条件有
  • 梅州网站建设公司视频教学互动网站建设
  • 桥东网站建设建设银行网站背景
  • 怎么做网站自动响应外包公司与劳务派遣区别
  • 受欢迎的网站建设教程房地网站制作
  • 网站如何做微信支付宝支付宝支付宝goule wordpress
  • 警告欺骗网站模板nodejs做后端的网站
  • 网站推广方式主要通过怎么将自己的视频推广出去
  • 网站后台传不上图片腾讯云网站搭建流程
  • 简单建网站公司注册代理机构
  • 建网站需要注意的问题贵阳app开发公司排名
  • 宁波网站备案幕布拍照网站建设业务拓展思路
  • 织梦网站专题页面如何做WordPress只能ssl
  • 腾讯云个人网站备案wordpress 时间设置
  • 天津市市建设与管理局网站传媒公司制作网站
  • 网站建设费如何做账开发一个app需要什么流程
  • 郑州企业做网站h汉狮商城系统网站建设
  • 达人室内设计网注册seo站内优化和站外优化
  • 网站建设运维方案网站建设后端
  • 网站备案代码生成哈尔滨网站建设公司那家好
  • 景区官方网站建设方案咸阳网站制作
  • 网站推广外链棋牌网站开发
  • 鲲鹏建设集团有限公司网站济南手机建站模板