java死锁的简单例子有哪些

1. 两个线程分别持有两个对象锁,相互等待对方释放锁。,2. 一个线程持有两个对象锁,另一个线程尝试获取这两个锁。

Java死锁是指两个或多个线程在执行过程中,因争夺资源而造成的一种相互等待的现象,当线程处于这种状态时,它们无法继续执行,除非其他线程释放它们正在等待的资源,下面是一个Java死锁简单例子

java死锁的简单例子有哪些

1、创建两个线程类ThreadAThreadB,分别继承Thread类。

class ThreadA extends Thread {
    private Object lock1;
    private Object lock2;
    public ThreadA(Object lock1, Object lock2) {
        this.lock1 = lock1;
        this.lock2 = lock2;
    }
    @Override
    public void run() {
        synchronized (lock1) {
            System.out.println("ThreadA 获取了 lock1");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            synchronized (lock2) {
                System.out.println("ThreadA 获取了 lock2");
            }
        }
    }
}
class ThreadB extends Thread {
    private Object lock1;
    private Object lock2;
    public ThreadB(Object lock1, Object lock2) {
        this.lock1 = lock1;
        this.lock2 = lock2;
    }
    @Override
    public void run() {
        synchronized (lock1) {
            System.out.println("ThreadB 获取了 lock1");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            synchronized (lock2) {
                System.out.println("ThreadB 获取了 lock2");
            }
        }
    }
}

2、在main方法中创建两个对象lock1lock2,并创建两个线程threadAthreadB,分别传入这两个对象作为参数,然后启动这两个线程。

java死锁的简单例子有哪些

public class DeadlockExample {
    public static void main(String[] args) {
        Object lock1 = new Object();
        Object lock2 = new Object();
        Thread threadA = new ThreadA(lock1, lock2);
        Thread threadB = new ThreadB(lock1, lock2);
        threadA.start();
        threadB.start();
    }
}

3、运行程序,观察输出结果,由于线程threadAthreadB分别持有lock1lock2的锁,且按照相同的顺序尝试获取锁,因此它们会互相等待对方释放锁,导致死锁,程序将无法继续执行。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/641723.html

(0)
未希的头像未希新媒体运营
上一篇 2024-05-21 12:17
下一篇 2024-05-21 12:19

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入