多线程存在哪些风险

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一直过不去。这就是所谓的活锁。

 

转载于:https://www.cnblogs.com/sunnyDream/p/8001336.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值