作者:微信小助手
发布时间:2019-07-18T08:43:54
点击蓝色“程序猿DD”关注我
回复“资源”获取独家整理的学习资料!
作为一名搞技术的程序猿或者是攻城狮,想必你应该是对下面这两个问题有所了解,说不定你在实际的工作或者面试就有遇到过:
第一个问题:Java死锁如何排查和解决?
第二个问题:服务器CPU占用率高达到100%排查和解决?
第三个问题:有哪些工具能够快速查看线程使用情况?
本文对这三个问题进行总结整理,通过实例演示讲解,精彩干货,不容错过啊!
前戏就这么多,高潮会很多,做好了,让我们直奔主题,发动小船,Let's go!
要排查和解决死锁,首先思考三个问题:
1. 什么是死锁?
2. 为什么会出现死锁?
3. 怎么排查代码中出现了死锁?
4. 如何避免写出死锁的代码?
作为技术人员(工程师),在出现问题的时候,能够尽快的去解决这个问题。但是在学习技术知识的时候,还是脚踏实地,多问一些为什么,一个好的问题,能够让自己思考,这方面的能力也一定要锻炼锻炼哦,这样才能更好的理解和掌握知识,并探究/触碰到更深入的地方。
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。[百度百科:死锁]
注:进程和线程都可以发生死锁,只要满足死锁的条件!
从上面的概念中我们知道
(1)必须是两个或者两个以上进程(线程)
(2)必须有竞争资源
首先整一个死锁的代码,看例子:
上面这段代码执行后,就会出现死锁,排查的姿势有如下几种,搞起来吧!
一:在windons命令窗口,使用