• 死锁


    • 线程死锁原理图:

    • 锁对象 LockA
    package com.yonyou.sci.gateway.exec.sisuo;
    
    public class LockA {
    
        // 构造方法私有化,控制这个锁对象不能使用 new 来创建
        private LockA(){};
    
        static final LockA locka = new LockA();
    
    }
    • 锁对象 LockB
    package com.yonyou.sci.gateway.exec.sisuo;
    
    public class LockB {
    
        // 构造方法私有化,控制这个锁对象不能使用 new 来创建
        private LockB(){};
    
        static final LockB lockb = new LockB();
    
    }
    • Runnable接口实现死锁代码
    package com.yonyou.sci.gateway.exec.sisuo;
    
    /**
     * 实现死锁代码
     * 运行 if 里面的 LockA.locka是,这时候执行 else 的 LockB.lockb 方法,就会出现死锁的情况
     */
    public class LockRunnable implements Runnable {
        int i = 0;
    
        @Override
        public void run () {
            while (true) {
                if( i%2 == 0){
                    synchronized (LockA.locka){
                        System.out.println("if...locka");
                        synchronized (LockB.lockb) {
                            System.out.println("if...lockb");
                        }
                    }
                }
                else {
                    synchronized (LockB.lockb){
                        System.out.println("else...lockb");
                        synchronized (LockA.locka){
                            System.out.println("else...locka");
                        }
                    }
                }
                i++;
            }
        }
        
    }
    • 运行死锁代码
    package com.yonyou.sci.gateway.exec.sisuo;
    
    public class LockMain {
    
        public static void main (String[] args) {
            LockRunnable lr = new LockRunnable();
    
            Thread t1 = new Thread(lr);
            Thread t2 = new Thread(lr);
    
            t1.start();t2.start();
        }
    
    }
  • 相关阅读:
    Git使用
    A star算法
    禅语人生
    android中GridView
    关于Android资源学习
    买了胡百敬老师的<SQL SERVER 2008 管理实战>
    人生七苦
    SQL Server 2008实现"编辑所有行"和"返回所有行"的方法
    陈慧娴《永远是你的朋友》专辑歌词
    SQL Server 2008 Service Pack 1 简体中文补丁包下载
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/11735524.html
Copyright © 2020-2023  润新知