Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >多线程中的死锁是啥意思?

多线程中的死锁是啥意思?

作者头像
吉林乌拉
发布于 2019-08-14 09:51:36
发布于 2019-08-14 09:51:36
1.3K0
举报
文章被收录于专栏:吉林乌拉吉林乌拉

死锁是在开发多线程时才会遇到的。原因就是不同的线程都在等待其它线程释放锁,而其它线程由于一些原因迟迟没有释放,这就造成了所有的线程都开始等待程序出现了假死的现象。说白了这就是一个BUG。我们用下面简单的程序来模拟一下死锁发生的现象。

发现程序居然不输出了,这就是我们上面所说的死锁现象。所有线程都在等着对方释放锁 ,所以就会出现这种程序假死情况。如果真出线了死锁我们应该怎么解决呢?因为在多线程中是不太好查找问题所在的。别担心Java为我们提供了一个命令来帮我们快速的查找问题所在。下面的方法就是如果真有死锁发生,我们怎么快速查看问题。

我们用windows系统来演示。具体的步骤如下:

  1. 我们用cmd进入系统的命令窗口。
  2. 将目录切换到Jdk安装目录的bin下。
  3. 运行Java自带的jps命令
  4. 运行jstack -l 进程id

下面看我具体的执行效果:

看到没这个命令直接帮我们定位到了代码中的某一行了,很方便我们查找问题有没有。如果以后在开发多线程中果真遇到了死锁问题,那么我们就可以用上述的方法快速定位问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吉林乌拉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于线程死锁问题
死锁是多线程编程里面非常常见的一个问题,作为一个中高级开发者是必须掌握的内容,今天我们来学习一下死锁相关的知识。
我是攻城师
2018/07/23
8000
关于线程死锁问题
一文学会Java死锁和CPU 100% 问题的排查技巧
作为一名搞技术的程序猿或者是攻城狮,想必你应该是对下面这两个问题有所了解,说不定你在实际的工作或者面试就有遇到过:
猿天地
2019/07/10
1.3K0
一文学会Java死锁和CPU 100% 问题的排查技巧
Java之美-死锁
程序即生活,程序的世界是生活的映射,但是人类是很智能的,轻轻松松处理任何复杂的问题,以至于有些细节我们都忽略不计。
kk大数据
2020/09/23
5090
Java之美-死锁
40个多线程问题总结
作者:五月的仓颉 来自:cnblogs.com/xrq730/p/5060921.html 1、多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这
架构师小秘圈
2018/04/18
6970
40个多线程问题总结
面试突击48:死锁的排查工具有哪些?
死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方释放资源,但没有一方提起释放资源,从而造成了一种阻塞的现象就称为死锁。
磊哥
2022/05/18
5550
面试突击48:死锁的排查工具有哪些?
jstack分析多线程死锁,来吧老铁们
死锁:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
公众号 IT老哥
2020/09/16
8860
jstack分析多线程死锁,来吧老铁们
Java死锁的原因排查和解决方案
相信程序员都会遇到这样的问题,Java死锁怎么检查呢?怎么才能解决?所以,何谓死锁?“死锁”是指两个或多个进程在执行过程中,由于相互竞争的资源或相互的通信而导致的一种阻塞现象。今日小编来帮您一次性解决
用户7353950
2022/06/23
8280
Java并发-死锁
 所谓死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无其余方法作用,它们都将无法推进下去。  网友们有一个生动形象的比方:两个人面对面过独木桥,甲和乙都已经在桥上走了一段距离,即占用了桥的资源,甲如果想通过独木桥的话,乙必须退出桥面让出桥的资源,让甲通过,但是乙不服,为什么让我先退出去,我还想先过去呢,于是就僵持不下,导致谁也过不了桥,这就是死锁。其实死锁形成的关键就是:谁也不让谁,谁都不会主动地让步。
Fisherman渔夫
2020/02/18
8540
Java并发-死锁
40个Java多线程问题总结
本文主要讲解了如何通过Java实现高并发、任务执行时间短的业务,以及对于业务执行时间长的情况如何进行优化。主要包括了线程池的使用、任务的拆分和异步执行等方面的内容。
Java后端工程师
2017/12/07
3.5K3
40个Java多线程问题总结
Java并发编程实战 04死锁了怎么办?
在第三篇文章最后的例子当中,需要获取到两个账户的锁后进行转账操作,这种情况有可能会发生死锁,我把上一章的代码片段放到下面:
Johnson木木
2020/05/13
4600
Java并发编程实战 04死锁了怎么办?
谁还没经历过死锁呢?
之前刚学习多线程时,由于各种锁的操作不当,经常不经意间程序写了代码就发生了死锁,不是在灰度测试的时候被测出来,就是在代码review的时候被提前发现。
敖丙
2022/06/10
4160
谁还没经历过死锁呢?
面试官提问:谈谈你对死锁的理解?
在之前的文章中,我们介绍了synchronized同步锁关键字的作用以及相关的用法,它能够保证同一时刻最多只有一个线程执行修饰的代码段,以实现线程安全执行的效果。
Java极客技术
2023/09/22
2890
面试官提问:谈谈你对死锁的理解?
面试系列之-java程序死锁排查及预防(JAVA基础)
死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅是在线程之间会发生,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于互相持有对方需要的锁,而永久处于阻塞的状态;
用户4283147
2023/09/11
4130
面试系列之-java程序死锁排查及预防(JAVA基础)
多线程之死锁就是这么简单
前言 只有光头才能变强 回顾前面: ThreadLocal就是这么简单 多线程三分钟就可以入个门了! 多线程基础必要知识点!看了学习多线程事半功倍 Java锁机制了解一下 AQS简简单单过一遍 Lock锁子类了解一下 线程池你真不来了解一下吗? 本篇主要是讲解死锁,这是我在多线程的最后一篇了。主要将多线程的基础过一遍,以后有机会再继续深入! 死锁是在多线程中也是比较重要的知识点了! 那么接下来就开始吧,如果文章有错误的地方请大家多多包涵,不吝在评论区指正哦~ 声明:本文使用JDK1.8 一、死锁讲解 在Ja
Java3y
2018/06/11
7503
发生死锁怎么办
我们使用锁来保证线程安全,但是使用不当与滥用可能就会引起死锁。并发程序一旦死锁,一般没有特别好的办法,很多时候只能重启。所以我们一定要比避免死锁。
码哥字节
2020/03/24
4660
发生死锁怎么办
死锁的 4 种排查工具 !
死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。
磊哥
2021/08/25
2K0
java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了。 死锁 死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。 举个例子,A同学抢了B同学的钢笔,B同学抢了A同学的书,两个人都相互占用对方的东西,都在让对方先还给自己自己再还,这样一直争执下去等待对方还而又得不到解决,老师知道此事后就让他们相互还给对方,这样在外力的干预下他们才解决,当然
Java技术栈
2018/03/30
9660
Java如何查看死锁?
转载自 https://blog.csdn.net/u014039577/article/details/52351626
allsmallpig
2021/02/25
1.2K0
线程&多线程
本文分享给需要面试刷题的朋友,我特意整理了一下,里面的技术不是靠几句话就能讲清楚,多问题其实答案很简单,但是背后的思考和逻辑不简单,要做到知其然还要知其所以然。如果想学习Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Netty源码,数据结构,jvm,多线程等等,由于篇幅有限,以下只展示小部分面试题,有需要完整版的朋友可以点一点链接跳转领取,链接:戳这里免费下载,获取码:掘金
崔笑颜
2020/12/28
8630
线程&多线程
Java线程的阻塞问题诊断和避免方法
总之,避免线程阻塞的关键是合理设计并发策略、合理使用线程同步和I/O操作,并使用工具来诊断和解决线程阻塞问题。
一凡sir
2023/08/14
8800
Java线程的阻塞问题诊断和避免方法
相关推荐
关于线程死锁问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档