• 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 ,当不是一对一对出现时,就会发生死锁了。

  • 相关阅读:
    OI数学知识清单
    线段树入门教程
    扩展欧几里得定理基础讲解 代码及证明
    名字竞技场 V3.0
    可持久化线段树(主席树)新手向教程
    矩阵乘法浅析
    [Luogu] P1233 木棍加工
    高斯消元 模板
    位运算技巧
    [ZJOJ] 5794 2018.08.10【2018提高组】模拟A组&省选 旅行
  • 原文地址:https://www.cnblogs.com/BruceKing/p/13577352.html
Copyright © 2020-2023  润新知