• Java多线程的一个死锁程序


    锁类

    public class MyLock 
    {
        public static Object lock_a = new Object();
        public static Object lock_b = new Object();
    }

    线程类

    public class DeadLockTest implements Runnable
    {
        private boolean flag ;
        
        public DeadLockTest(boolean flag)
        {
            this.flag = flag;
        }
        
        @Override
        public void run() 
        {
            if(flag)
            {
                while(true)
                synchronized(MyLock.lock_a)
                {
                    System.out.println(Thread.currentThread().getName()+"...lock_a...");
                    synchronized(MyLock.lock_b)
                    {
                        System.out.println(Thread.currentThread().getName()+"...lock_b...");
                    }
                }
            }
            else
            {
                while(true)
                synchronized(MyLock.lock_b)
                {
                    System.out.println(Thread.currentThread().getName()+"...lock_b...");
                    synchronized(MyLock.lock_a)
                    {
                        System.out.println(Thread.currentThread().getName()+"...lock_a...");
                    }
                }
            }
        }
    
    }

    测试代码

    import org.junit.Test;
    
    public class DeadLock 
    {
        DeadLockTest a = new DeadLockTest(true);
        DeadLockTest b = new DeadLockTest(false);
        
        Thread t1 = new Thread(a);
        Thread t2 = new Thread(b);
        
        @Test
        public void TestDeadLock()
        {
            t1.start();
            t2.start();
        }
        
    }
  • 相关阅读:
    Layui_2.x_上传插件使用
    Layui_1.0.9_分页实例_Java
    Jquery_如何扩展方法
    Linux_Crontab命令
    Linux_Centos7_设置MySql定时备份
    Linux_MySql_tar_安装(转)
    MySql_创建用户并赋予权限
    滚动条定位
    MySQL 存储过程创建表
    取两个时间差
  • 原文地址:https://www.cnblogs.com/xiayangqiushi/p/3363037.html
Copyright © 2020-2023  润新知