zoukankan      html  css  js  c++  java
  • 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 ,当不是一对一对出现时,就会发生死锁了。

  • 相关阅读:
    【poj2396】 Budget
    【bzoj3876】 Ahoi2014—支线剧情
    【uoj207】 共价大爷游长沙
    【bzoj3064】 CPU监控
    【codeforces 103E】 Buying Sets
    【bzoj3938】 Robot
    【bzoj1568】 JSOI2008—Blue Mary开公司
    【hdu5306】 Gorgeous Sequence
    【bzoj2229】 Zjoi2011—最小割
    【bzoj2007】 Noi2010—海拔
  • 原文地址:https://www.cnblogs.com/BruceKing/p/13577352.html
Copyright © 2011-2022 走看看