网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

java中死锁问题的实例详解

java 中死锁问题的实例详解

在秀山土家族苗族等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都网站设计、外贸营销网站建设 网站设计制作按需制作网站,公司网站建设,企业网站建设,品牌网站设计,营销型网站,外贸网站建设,秀山土家族苗族网站建设费用合理。

先看代码在做解释

public class DeadLock implements Runnable{
  String a;
  String b;
  boolean flag;
  public DeadLock(String a,String b,boolean flag){
    this.a=a;
    this.b=b;
    this.flag=flag;
  }
  public void run(){
    if(flag){
//     while(true){
          synchronized(a){
            System.out.println("锁a");
            synchronized(b){
              System.out.println("锁b----");
            }
          }
//       }
    }else{
//   while(true){
        synchronized(b){
          System.out.println("锁b");
          synchronized(a){
            System.out.println("锁a----");
          }
        }
//     }
    }
  }

  public static void main(String[] args){
  String a=new String("a");
  String b=new String("b");
  DeadLock d1=new DeadLock(a,b,true);
  DeadLock d2=new DeadLock(a,b,false);
  Thread t1=new Thread(d1);
  Thread t2=new Thread(d2);
  t1.start();
  t2.start();
  System.out.println("欢声笑语中打出GG");
  }

}

以上是代码部分,如果没有死锁,可以在if下加while(true),必然死锁,下面来做说明。

这个仅仅是为了理解死锁和面试用的,创建两个对象a和b只是为了作为死锁的对象而用,线程t1运行(t1.start()),线程t1拿到锁a后,需要继续执行,拿到锁b,而线程t2运行(t2.start()),拿到锁b,想继续拿到锁a继续执行,这就形成死锁,互相持有对面所需要的锁对象。

如果面试,可以简单记下,两个线程,两个锁对象,锁互相嵌套,最少两种状态,同时执行,一次不行就多次,也可锁外面加循环,让线程多次运行,就会死锁,因为运行一次,可能存在偶然,第一个线程执行完了,锁对象释放了,第二个线程才进来执行,如此就有偶然现象。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


当前标题:java中死锁问题的实例详解
本文链接:http://bjjierui.cn/article/gdioop.html

其他资讯