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

建设银行贵金属网站wordpress升级设置密码

建设银行贵金属网站,wordpress升级设置密码,中国外贸导航网,中铁航空港建设集团网站前言 死锁是在开发中经常会遇到的一个问题,指的是多个进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象。 1. 死锁的成因 死锁的产生必须要同时满足以下四个条件:互斥条件(Mutual Exclusion…

前言

死锁是在开发中经常会遇到的一个问题,指的是多个进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象。

1. 死锁的成因

死锁的产生必须要同时满足以下四个条件:

  1. 互斥条件(Mutual Exclusion)
    资源一次只能由一个线程占用,其他线程必须等待该资源释放,不能使用。

  2. 占有并等待(Hold and Wait)
    线程已经持有至少一个资源,并且正在等待获取其他被占用的资源。

  3. 非抢占条件(No Preemption)
    已分配给进程的资源不能被其他线程强行夺取,必须由线程自行释放。

  4. 循环等待(Circular Wait)
    存在一个线程等待的循环链,每个进程都在等待下一个进程所占用的资源。

以下是一个典型的死锁案例:

    public static void main(String[] args) {//死锁案例Object lock1 = new Object();Object lock2 = new Object();Thread t1 = new Thread(() -> {synchronized (lock1) {System.out.println("线程1获取到锁1,等待锁2");try {Thread.sleep(100); // 确保线程2能获取到锁2} catch (InterruptedException e) {e.printStackTrace();}synchronized (lock2) {System.out.println("线程1获取到锁2");}}});Thread t2 = new Thread(() -> {synchronized (lock2) {System.out.println("线程2获取到锁2,等待锁1");try {Thread.sleep(100); // 确保线程1能获取到锁1} catch (InterruptedException e) {e.printStackTrace();}synchronized (lock1) {System.out.println("线程2获取到锁1");}}});}

这四个条件同时成立,就会形成死锁,当我们打破其中任意一个条件,死锁就会消失。

2. 解决死锁问题

上述提到的四个条件,前三个条件都不好打破,第四个是我们最容易破坏的条件,所以为了解决死锁问题,我们最常用的方法就是破坏”循环等待“。

为了破坏这个条件,我们使用锁排序,我们可以把所有的锁进行编号,规定线程按照固定的编号顺序来获取锁,这样就可以避免环路的产生。

就如上面展示的死锁代码,我们把获取锁的顺序进行修改,就可以防止死锁的产生:

        //死锁案例Object lock1 = new Object();Object lock2 = new Object();Thread t1 = new Thread(() -> {synchronized (lock1) {try {Thread.sleep(100); } catch (InterruptedException e) {e.printStackTrace();}synchronized (lock2) {System.out.println("线程1获取到锁2");}}});Thread t2 = new Thread(() -> {synchronized (lock1) {try {Thread.sleep(100); } catch (InterruptedException e) {e.printStackTrace();}synchronized (lock2) {System.out.println("线程2获取到锁1");}}});}

这里统一了线程对锁的获取顺序,组织了等待环路的产生。

总结

本篇文章简单的介绍了我们常常遇到的死锁问题,讲述了死锁的成因及其解决方法,希望通过这篇文章,能够加深你对死锁的理解,能够轻松的发现并应对可能产生的死锁问题。


文章转载自:

http://ObmTr09m.gfznL.cn
http://r4ucdwkt.gfznL.cn
http://fYGa4Gkf.gfznL.cn
http://GAN1QfAc.gfznL.cn
http://VtLNA0Dk.gfznL.cn
http://iOgAqaZ9.gfznL.cn
http://kjkxYNaP.gfznL.cn
http://rdI60jl4.gfznL.cn
http://4gsVEYOU.gfznL.cn
http://HWThuY6A.gfznL.cn
http://EIGqALHS.gfznL.cn
http://ZMO4sCpf.gfznL.cn
http://SJ8sRGo5.gfznL.cn
http://mgwK0DLB.gfznL.cn
http://0ZRWkUpS.gfznL.cn
http://N8wYPx2O.gfznL.cn
http://nEG0DHyR.gfznL.cn
http://V2Fz688C.gfznL.cn
http://MJDqlZJF.gfznL.cn
http://qdUGQRjp.gfznL.cn
http://KZUOakJ5.gfznL.cn
http://N67loM64.gfznL.cn
http://SpkuAlCF.gfznL.cn
http://LGwvNkN7.gfznL.cn
http://lqJumHMm.gfznL.cn
http://JrWAWlvr.gfznL.cn
http://kxp47eQE.gfznL.cn
http://HL3SOyN9.gfznL.cn
http://vhpBAYfo.gfznL.cn
http://edcuHxfv.gfznL.cn
http://www.dtcms.com/wzjs/709016.html

相关文章:

  • 建一个自己用的网站要多少钱做网站打广告犯法吗
  • 老板让我做网站负责人h5响应式网站开发
  • 网站换了域名做跳转wordpress评论框制作
  • 嵊州市建设银行网站网页升级紧急通知网页打不开
  • 嵌入式软硬件开发开封搜索引擎优化
  • 做壁纸网站好智慧团建登录官网手机版
  • 顺德制作网站价格多少建设公司加盟
  • 广西网站建设开发团队百度爱采购优化
  • 二手书交易网站策划书西安商城类网站制作
  • 福田网站建设乐云seo南昌建设局
  • 建立问答类的网站北京网页网站设计制作
  • 广饶县城乡规划建设局网站wordpress 评论系统
  • 网站建设 超薄网络腾讯企业邮箱免费版
  • 品牌网站建设搜搜磐石网络长沙圭塘网站建设公司
  • 网站建设内容清单金融做推广的网站
  • 上海网站策划腾讯小程序开发工具
  • 苏州做公司网站设计的公司江西建设厅网站证书查询
  • 济南手机网站建设公司专业加速器产业园
  • 上海响应式网站建设费用wordpress增加首页菜单
  • 如何建立公司网站建议和规则花都做网站公司
  • 建网站一般最低多少钱wordpress数据改网址
  • 国内优秀网站网址网站推广的主要途径
  • 做面包的公司网站建设企业网站的规划
  • 吃的网站要怎么做公司注册资金100万是什么意思
  • 赣州网站优化公司国家信息公示系统官网
  • 西安做网站seo企业建设网站方案设计
  • 企业网站代码鑫牛元网站建设
  • WordPress不关站备案插件2345浏览器官方网站
  • 丰泽区住房和城乡建设局投诉网站呼叫中心系统怎么收费
  • wordpress做社区网站网站后台源码