死锁简单示例

本文通过一个简单的代码示例,揭示了多线程环境下死锁的概念。当两个或更多线程互相等待对方释放资源,导致无法继续执行时,就形成了死锁。这种现象通常出现在并发执行中,不同线程以不同顺序请求共享锁时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单死锁代码示例
死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。

public class DeathLock extends Thread{
    public static final Object obj1 = new Object();
    public static final Object obj2 = new Object();
    boolean flag ;
    public  DeathLock(boolean flag){
        this.flag =flag;
    }
    public void run(){

        if(flag){
            synchronized (obj1) {
                System.out.println("锁住1");
                synchronized (obj2) {
                    System.out.println("锁住2");
                }
            }
        }else{
            synchronized (obj2) {
                System.out.println("锁住22");
                synchronized (obj1) {
                    System.out.println("锁住21");
                }
            }
        }
    }
    public static void main(String[] args) {
        DeathLock lock = new DeathLock(true);
        DeathLock lock1 = new DeathLock(false);
        lock.start();  
        lock1.start();  
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值