java八股文面试[多线程]——死锁、活锁、饥饿

古城微笑少年丶 2024-03-24 22:16 184阅读 0赞

f91c452c90b24c2baacd670f177c60cb.png

049b0ae430644ed6a69d183d8a3a6532.png

DCL双重锁:TODO

如何预防死锁:

8577b86fe69c48408a6d4ea7997b71b4.png

bf4e31a4b8414d7d89a39494d0c66572.png

解决死锁问题的策略:

2b8369fd41674709aa85a4670b9cfe2e.png

如何查看线程死锁:

aceb3b2a730c487aa80973333ff227fc.png

线上死锁是如何排查的?

  1. jps 查找一个可能有问题的进程id
  2. 然后执行 【jstack -F 进程id
  3. 如果环境允许远程连接JVM,可以使用jconsole或者jvisualvm,图形化界面检测是否存在死锁

知识来源:

【2023年面试】描述一下线程安全活跃态问题,以及竞态条件_哔哩哔哩_bilibili

【2023年面试】如何预防死锁_哔哩哔哩_bilibili

【并发与线程】阿里一面:如何查看线程死锁_哔哩哔哩_bilibili

发表评论

表情:
评论列表 (有 0 条评论,184人围观)

还没有评论,来说两句吧...

相关阅读

    相关 线(19)线饥饿

    活锁和线程饥饿是并发编程中需要避免的两个问题。理解它们的成因和影响,以及如何解决这些问题,对于设计高效、可靠的并发系统至关重要。通过引入随机性、使用公平锁、合理管理线程优...

    相关 饥饿

    死锁 死锁是多线程编程中一种常见的问题,它发生在两个或多个线程相互等待对方释放资源的情况下。这种情况会导致所有线程都无法继续执行,程序停滞不前。典型的死锁情况包括以下几个

    相关 饥饿

    推荐:[Java并发编程汇总][Java] 死锁、饥饿和活锁 原文地址 [Java并发编程系列之十二:死锁、饥饿和活锁][Java 1] 正文 死锁发生在一个线程

    相关 饥饿解释

    死锁:是指 两个或两个以上的进程(或线程)在执行过程中,因 争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁