zoukankan      html  css  js  c++  java
  • 多线程存在哪些风险

    1.线程安全性问题

    2.性能问题:线程上下文切换,带来一定的性能损耗。

    3.活跃性问题:死锁、饥饿、活锁。

      a.死锁:

      A对象有a1资源,B对象有b1资源。A对象必须先获得b1资源才可以使用a1资源,而B对象必须先获得a1资源才可以使用b1资源。它们互相想要对方的资源,但是又不肯释放自己拥有的资源。

      检测死锁步骤:

      1.利用快捷键“win+R”打开“运行”窗口,接着在窗口中输入cmd并点击回车。

      2.在窗口中输入jconsole,在弹出来的窗口中选择自己想要的进程如IDEA,点击进入。

      3.点击线程,左下角有个按钮可以检测死锁。

      b.饥饿:

      中午食堂排队打饭,很多人在排队,每次打饭的时候总有人不断的插队,这样导致排队在后面的人有可能要排很久很久。也就是所谓的饥饿问题。

      c.活锁:

      两个人A和B中间有条河,然后有两条独木桥C和D。第一次,A选择C独木桥,很不巧的是,B也恰恰选择了C独木桥。然后,他们各自礼貌的说,我让给你吧。结果,第二次,A重新选择了D独木桥,可是,B也是重新选择了D独木桥。然后,他们再次礼貌的说,我让给你过。就这样一直反复反复,导致A和B一直过不去。这就是所谓的活锁。

  • 相关阅读:
    Luogu P3731 [HAOI2017]新型城市化
    Luogu P3227 [HNOI2013]切糕 最小割
    Luogu P1654 OSU!
    CF235B Let's Play Osu! 期望dp
    Luogu P2057 [SHOI2007]善意的投票
    任意模数NTT学习笔记
    Burnside引理的感性证明
    JLOI2015 城池攻占
    BZOJ2957 楼房重建
    NOI2009 区间
  • 原文地址:https://www.cnblogs.com/sunnyDream/p/8001336.html
Copyright © 2011-2022 走看看