• Java-多线程-线程死锁代码实现


    package cn.bruce.Thread;
    
    public class LockDemo {
        public final static void main(String[] args) {
            // 创建线程任务类对象
            DeadLock DL = new DeadLock();
            // 创建两个线程
            Thread t0 = new Thread(DL);
            Thread t1 = new Thread(DL);
            // 启动线程
            t0.start();
            t1.start();
        }
    }
    
    // 定义锁对象类
    class Locka {
        private Locka()
        {
        }
        //定义唯一对象
        public static final Locka LOCKA = new Locka();
    }
    
    // 定义锁对象类
    class Lockb {
        private Lockb()
        {
        }
    //定义唯一对象
        public static final Lockb LOCKB = new Lockb();
    }
    
    // 定义线程任务类
    class DeadLock implements Runnable {
        private int i;
    
        @Override
        public void run() {
            while (true)
            {
                if (i % 2 == 0)
                {// 先进入A同步,再进入B同步
                    synchronized (Locka.LOCKA)
                    {
                        System.out.println("if...Locka");
                        synchronized (Lockb.LOCKB)
                        {
                            System.out.println("if...Lockb");
                        }
                    }
                } else
                {// 先进入B同步,再进入A同步
                    synchronized (Lockb.LOCKB)
                    {
                        System.out.println("else...Lockb");
                        synchronized (Locka.LOCKA)
                        {
                            System.out.println("else...Locka");
                        }
                    }
                }
                i++;
            }
    
        }
    
    }

     由上图可见,程序是没结束的,只是卡死了,正常情况应该是一组一组交替出现if和else ,当不是一对一对出现时,就会发生死锁了。

  • 相关阅读:
    Python实现客观赋权法
    Python实现熵值法确定权重
    正则化项L1和L2
    特征工程的归一化和标准化
    CentOS下Neo4j安装教程
    Window下Neo4j安装教程
    Window下JDK安装教程
    Git 命令
    Kubernetes 资源清单 常用字段,Pod 实例
    kubernetes 集群搭建
  • 原文地址:https://www.cnblogs.com/BruceKing/p/13577352.html
Copyright © 2020-2023  润新知