zoukankan      html  css  js  c++  java
  • 写一个死锁

    死锁产生的原因:

    一个线程进入锁一需要锁二,

    另一个线程进入锁二需要锁一,

    由于锁一锁二都被占了,所以线程执行不下去。

    所以只需写一个相互交叉的锁一锁二就可以产生死锁。

    class sisuogoucheng implements Runnable
    {
      private boolean panduan=true;

      sisuogoucheng(boolean panduan)
      {
        this.panduan=panduan;  //写一个判断条件使线程进入不同的锁。
      }


      public void run()

      {    

        if(panduan)

        {
          synchronized(mykey.obj1)
          {
            System.out.println("t1----obj1");
            synchronized(mykey.obj2)
            {
              System.out.println("t1------obj2");
            }
          }
        }
        else
        {
          synchronized(mykey.obj2)
          {
            System.out.println("t2-------obj2");
            synchronized(mykey.obj1)
            {
              System.out.println("t2---------obj1");
            }
          }
        }
      }
    }

    class mykey
    {
      static Object obj1=new Object();  //创建两个不同的锁
      static Object obj2=new Object();
    }

    public class sisuo

    {

      public static void main(String[] args)

       {

        Thread t1=new Thread(new sisuogoucheng(true));
        Thread t2=new Thread(new sisuogoucheng(false));

        t1.start();
        t2.start();
      }

    }

  • 相关阅读:
    The IBM Blockchain Platform: Develop pre-requisites
    分布式账本简介
    MAC快捷键
    js跳转方法整理与自动刷新
    解决Excel打开UTF-8编码CSV文件乱码的问题
    C#代码实现邮箱验证C#中及一些常用的正则表达式
    php大小写转换函数
    PHP empty()函数使用需要注意
    关于网站调用在线翻译api实现翻译功能
    关于淘宝店铺装修弹出层popup的记录
  • 原文地址:https://www.cnblogs.com/shenhengjia/p/9129779.html
Copyright © 2011-2022 走看看