`

死锁不会发生

 
阅读更多
public class DeadLock {  //不会发生死锁,只不过出来后还要进去

    public void startRun(int i)
    {
        synchronized(this){

            while( i > 10)
            {
                startRun(--i);
                System.out.println(i);
            }
        }
    }

    public static void main(String[] args)
    {
        DeadLock d = new DeadLock();
        d.startRun(12);
    }
}

 上面的程序不会发生死锁,因为至始至终只有一个主线程,它不会和别人争抢资源的。只不过这个程序是循环递归调用,即从下一层返回来之后,还要进去

分享到:
评论

相关推荐

    现代操作系统死锁PPT学习教案.pptx

    避免死锁的策略主要有以下四种:第一种是忽略问题,即在设计系统时假设死锁不会发生,这种方法风险较高,不推荐使用。第二种是检测并恢复,意味着系统会定期检查死锁的发生,一旦检测到,就采取措施将系统恢复到安全...

    数据库死锁-解决死锁问题的三种办法

    1. **资源分配图**:通过构建资源分配图,分析可能的死锁情况,确保不会形成循环等待的条件。 2. **严格顺序锁定**:要求事务按照固定的顺序锁定资源,例如,所有事务都必须先锁定ID小的资源,再锁定ID大的资源,...

    车辆行驶死锁问题

    车辆行驶死锁问题是指在一组进程中的各个进程占有不会释放的资源,但因互相申请被其他进程所占用不会释放的资源而处于一种永久等待的状态。本实验主要使用资源有序分配策略来预防死锁。 死锁的四个必要条件是: 1....

    sqlserver如何快速查询死锁语句

    这种方法的优点在于,它可以精确地结束导致死锁的语句,而不会影响其他正常事务,避免了全局解锁可能引发的数据混乱。然而,需要注意的是,`KILL`命令应当谨慎使用,因为它可能导致未完成的事务丢失,因此在生产环境...

    oracle死锁原因解决办法

    如果不同的事务执行了相同的SQL语句序列但顺序不同,可能会导致死锁的发生。例如,事务A先执行了SELECT...FOR UPDATE然后执行UPDATE,而事务B则先执行UPDATE再执行SELECT...FOR UPDATE,这种情况下很容易出现死锁。 ...

    多线死锁解决方案

    死锁避免是通过动态地分配资源,确保系统不会进入死锁状态。这通常需要系统有一个资源分配图,通过银行家算法或其他算法来检查系统是否安全。 四、死锁检测与恢复 1. 死锁检测:通过系统状态的监控,找出处于死锁...

    死锁的检测与接触 C语言

    实验的主要目的是理解操作系统如何检测死锁的发生,并在发生死锁时采取措施解除。 首先,实验设计了一个类似于银行家算法的数据结构,包括以下关键部分: 1. `allocation[M][M]`:存储每个进程当前已经分配到的资源...

    死锁典型例题,对理解死锁的计算类题目有帮助

    在这个例子中,我们假设某系统中有 3 个并发进程,各都需要同类资源 4 个,则系统不会发生死锁的最小资源总数是多少? 解:10 个。3 × (4-1)+1=10 例 4:死锁的最大进程数 在这个例子中,我们假设 N 个进程...

    操作系统中的死锁问题

    2. **死锁避免**:在资源分配之前进行安全性检查,确保系统不会进入死锁状态。 3. **死锁检测与恢复**:允许死锁发生,并在检测到死锁后采取措施恢复系统正常运行。 #### 死锁预防方法 死锁预防的主要思想是破坏...

    操作系统实验二(死锁)

    2. **避免死锁**:在资源分配过程中,使用某种算法确保不会进入死锁状态。银行家算法是一个典型的例子,它通过预先计算系统的安全状态,确保任何时候都能找到一个可执行的进程序列,使得每个进程都能完成执行。 3. ...

    死锁检测与解除

    在计算机系统中,死锁是一种不希望出现的情况,它发生在两个或多个进程相互等待对方释放资源,导致它们都无法继续执行。这种情况可能导致整个系统的性能下降甚至完全停滞。本篇将深入探讨死锁的概念、死锁的四个必要...

    操作系统\os 死锁.pdf

    2. **死锁避免**:在分配资源之前,检查分配后是否会导致系统进入不安全状态(可能会发生死锁),只有在不会导致死锁的情况下才分配资源。 3. **死锁检测**:定期检测系统是否处于死锁状态,一旦发现死锁发生,...

    浅谈死锁(Linux操作系统)

    在实践中,大多数类Unix系统包括Linux倾向于采用第一种策略——忽略死锁,这是因为检测和处理死锁的成本通常较高,且在正常情况下死锁发生的概率相对较低。然而,随着系统复杂度的增加和技术的进步,未来的操作系统...

    操作系统-死锁

    - **避免死锁**:在进程运行之前分析其资源需求,确保系统不会进入死锁状态。 - **检测与恢复**:允许死锁发生,然后通过检测机制发现死锁,并采取措施(如杀死某些进程)来解除死锁。 #### 五、死锁预防的具体方法...

    非常经典的死锁演示代码

    在本篇文章中,我们将通过一个具体的Java代码示例来深入理解死锁发生的原理及其解决方法。 #### 二、代码分析 下面是对给定代码的具体分析: ```java package com.wmmad.test; public class DeadLockMarker { ...

    操作系统实验--死锁

    随机分配算法可能在资源不足时导致死锁,而银行家算法则通过在分配资源前进行安全性检查来确保系统不会陷入死锁状态。 总的来说,这个操作系统实验帮助我们深入理解死锁的概念,掌握了死锁产生的条件,以及如何通过...

    操作系统例题分析.pdf

    22. 防止死锁:静态资源分配避免了循环等待条件,使得死锁不会发生。 23. 资源需求:如果有3个进程,每个需要4个资源,至少需要12个资源来确保无死锁。 这些知识点涵盖了操作系统中进程管理、线程、同步机制、资源...

    查看阻塞和死锁

    在实际操作中,应该优先考虑优化事务设计,避免长时间持有锁,合理设置隔离级别,以及使用锁超时等策略来预防阻塞和死锁的发生。 ### 结论 阻塞和死锁是数据库性能调优中不可忽视的问题。通过使用如“sp_who_lock...

Global site tag (gtag.js) - Google Analytics