线程进程安全概述.pptVIP

  • 0
  • 0
  • 约7.28千字
  • 约 45页
  • 2022-11-17 发布于重庆
  • 举报
3.4.1 线程死锁 死锁(DeadLock),是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象。此时称系统处于死锁状态,这些永远在互相等待的线程称为死锁线程。 产生死锁的四个必要条件是: 互斥条件:资源每次只能被一个线程使用。如前面的“线程同步代码段”,就是只能被一个线程使用的典型资源; 请求与保持条件:一个线程请求资源,但因为某种原因,该资源无法分配给它,于是该线程阻塞,此时,它对已获得的资源保持不放; 不剥夺条件:进程已获得的资源,在未使用完之前,不管其是否阻塞,无法强行剥夺; 循环等待条件:若干进程之间互相等待,形成一种头尾相接的循环等待资源关系。 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。 第三十页,共四十五页。 3.4.2 案例分析 以Java语言为例,死锁一般来源于代码段的同步,当一段同步代码被某线程运行时,其他线程可能进入堵塞状态(无法抢占CPU),而刚好在该线程中,访问了某个对象,此时,除非同步锁定被解除,否则其他线程就不能访问那个对象。这可以称为“线程正在等待一个对象资源”。如果出现一种极端情况,一个线程等候另一个对象,而另一个对象又在等候下一个对象,以此类推。这个“ 等候链”如果进入封闭状态,也就是说,最后那个对象等候的是第一个对象,此时,所有线程都会陷入无休止的相互等待

文档评论(0)

1亿VIP精品文档

相关文档