博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程存在哪些风险
阅读量:5168 次
发布时间:2019-06-13

本文共 573 字,大约阅读时间需要 1 分钟。

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

你可能感兴趣的文章
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>