Java中的死锁编码以及定位分析

目录

 

死锁是什么

死锁产生的主要原因

死锁的java代码模拟

测试结果展示

死锁的定位分析


死锁是什么

       死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象

死锁产生的主要原因

       1.系统资源不足

       2.进程运行推进的顺序不合适

       3.资源分配不当

死锁的java代码模拟

DeadLock类

package test2;

import java.util.concurrent.TimeUnit;

public class DeadLock implements Runnable{

    private String firstlock;
    private String secondlock;

    public DeadLock(String firstlock, String secondlock) {
        this.firstlock = firstlock;
        this.secondlock = secondlock;
    }

    @Override
    public void run() {
        synchronized (firstlock){
            System.out.println(Thread.currentThread().getName()+"\t持有" + firstlock + "需要" + secondlock);
            try {
                TimeUnit.SECONDS.sleep(2L);
            }catch (InterruptedException e){
                e.printStackTrace();
            }
            synchronized (secondlock){
                System.out.println(Thread.currentThread().getName()+"\t持有" + secondlock + "需要" + firstlock);
            }
        }
    }
}

测试类

package test2;



public class Main {
    public static void main(String[] args){
        String lockA = "A";
        String lockB = "B";
        new Thread(new DeadLock(lockA,lockB),"线程A").start();
        new Thread(new DeadLock(lockB,lockA),"线程B").start();
    }
}

测试结果展示

死锁的定位分析

发布了20 篇原创文章 · 获赞 14 · 访问量 8794

猜你喜欢

转载自blog.csdn.net/yemuxiaweiliang/article/details/104139846