美文网首页
Lab4 Deadlock

Lab4 Deadlock

作者: MichelleLI | 来源:发表于2017-05-15 03:32 被阅读0次

1. 死锁停在第212次:

deadlock.png

2. 产生死锁的4个必要条件:

1.资源互斥(Mutual exclusion): 一个资源每次只能被一个进程使用
2.占有及等待(Hold and wait): 一个进程因请求资源而阻塞时,对已获得的资源保持占有
3.非抢占(No preemption): 进程已获得的资源,在末使用完之前,不能强行剥夺
4.循环等待(Circular wait): 若干进程之间形成一种头尾相接的循环等待资源关系

3. 对上述程序产生死锁的解释:

AB.png
deadlock.png

当一个线程访问object的一个synchronized同步代码块或同步方法时,其他线程对object中所有其它synchronized同步代码块或同步方法的访问将被阻塞。
t.start()之后,线程t被插入调度队列中,当t被调度的时候就执行run()中的代码:b.methodB(a),其中调用a.last(); 若与此同时执行了a.methodA(b),其中调用b.last(); 那么由于a.methodA()在执行中,且被synchronized字段修饰,b.methodB(a)无法访问同样为synchronized的函数a.last();同时由于b.methodB()正在被访问,且被synchronized字段修饰,a.methodA(b)无法访问同样为synchronized的函数b.last()。那么这两个线程产生了循环等待,将无限制地互相等待释放资源,从而产生了死锁。

相关文章

  • Lab4 Deadlock

    1. 死锁停在第212次: 2. 产生死锁的4个必要条件: 1.资源互斥(Mutual exclusion): 一...

  • Ch8 Deadlock

    Chapter 8 : Deadlock System model Deadlock Characterizati...

  • 【The Java™ Tutorials】【Concurrenc

    Deadlock Deadlock describes a situation where two or more...

  • Delete&Insert引发的Mysql死锁

    近日遇到一个比较奇怪的deadlock错误, 错误详情: Deadlock found when trying t...

  • Deadlock

    DeadLock 无论在硬件层面还是软件层面,都有可能出现多device多user的情景,如果不能恰当地分配资源那...

  • DeadLock Example

    start end

  • go deadlock

    死锁 何谓死锁? 操作系统有讲过的,所有的线程或进程都在等待资源的释放。如上的程序中, 只有一个goroutine...

  • 死锁(DeadLock)

    所谓死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用...

  • 死锁 deadLock

    什么是死锁 如果两个线程互相持有对方获得的锁 并尝试获得对方的那把锁 就会造成死锁 死锁的示例代码 死锁如何使用j...

  • 记录Webview错误

    Probable deadlock detected due to WebView API being calle...

网友评论

      本文标题:Lab4 Deadlock

      本文链接:https://www.haomeiwen.com/subject/zbvfpttx.html