zoukankan      html  css  js  c++  java
  • java面试题之什么是死锁、活锁、饿死和竞态条件?

    • 死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力作用,他们将无法推进下去;
    • 活锁:是指两个线程优先级相同,都礼让不走,就这样一直僵持下去;
    • 饿死:在单线程情况下,A、B两个线程,A先执行;A在执行过程中,C线程来了,B让C先执行;C在执行过程中,D线程来了,B也让D先执行,就这样B一直都是等待状态。
    • 竞态条件:多个线程竞争同一个变量,导致数据的不正确性,线程的访问顺序是不可控的,会影响最终的结果。

    产生死锁的必要条件:

    1、互斥使用(资源独占)

      一个资源每次只能给一个进程使用(比如写操作)

    2、占有且等待:

      进程在申请新的资源的同时,保持对原有资源的占有

    3、不可抢占:

      资源申请者不能强行从资源占有者手动夺取资源,资源只能由占有者自愿释放

    4、循环等待:

      A等待B占有的资源,B等待C占有的资源,C等待D占有的资源,..........N等待A的资源,形成一个线程等待回路

  • 相关阅读:
    常用模块的作业
    一些常用的模块
    软件开发的目录规范

    匿名函数作业
    模块
    算法,面向过程与匿名函数
    生成器表达式作业
    C. Perfect Keyboard
    C. Ehab and Path-etic MEXs
  • 原文地址:https://www.cnblogs.com/hujinshui/p/9961317.html
Copyright © 2011-2022 走看看