gpt4 book ai didi

java - 这是循环死锁还是循环等待?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:30 25 4
gpt4 key购买 nike

我使用 JProfiler 检测 Restful Java 微服务,同时使用 JMeter 发送多个请求。我看到有很多阻塞的线程。微服务使用Spring、SpringBoot。当发送多个请求时,不知何故出现了问题。

在 JProfiler 工具中,我可以看到: Overview Thread History Monitor Usage Monitor History Thread Dump

  • 在我阅读之后:Circular Deadlock , Dining philosophers , 我认为存在循环死锁。这是对的吗?
  • 死锁和循环死锁有什么区别?后我在互联网上浏览了一下,我看到了另一个概念,Circular Wait。循环等待呢?
  • 如果您查看监视器历史记录和概述部分,您会看到很多阻塞的线程,还有一个线程在等待其他线程完成。问题出在 ReentrantLock.NonfairSync类(class)。但是如果您查看线程转储,您会看到线程处于等待状态,并且在堆栈跟踪的顶部您会看到 sun.misc.Unsafe.park。通过 park 和 unpark 方法实现了线程锁。你知道它是什么吗?
  • com.fasterxml 库会不会又出问题了? jackson project

谢谢

最佳答案

After I read: Circular Deadlock, Dining philosophers, I think there is a Circular Deadlock. Is this right?

根据证据不能说。

What is the difference between Deadlock and Circular Deadlock?

我以前从未见过循环死锁这个词,但在那篇文章的上下文中,“循环”似乎意味着有两个以上的线程死锁。在我看来,这并不是一个特别有用的区分。

After I navigated a bit on internet, I see another concept, Circular Wait. What about Circular Wait?

我在维基百科中找到了这个术语 Deadlock页。在这种情况下,它指的是您有 N 个代理(例如线程)A1 到 AN 并且:

  • A1 等待 A2
  • A2 等待 A3
  • ...
  • AN 等待 A1

在依赖项中创建一个“圆圈”或循环。请注意,N 可以小到 2。(这在维基百科页面中有清楚的解释。)

With methods park and unpark it is realized the Thread Locks. Do you know what it can be?

这就是锁和等待在 JVM 中的实现方式。

Could be a problem with com.fasterxml.jackson library again?

这是可能的。您使用库的方式也可能存在问题。然而,这是猜测。根据您提供的信息,没有足够的证据说明问题所在。


我建议您停止寻找答案。相反,戴上您的思考帽,开始阅读代码和 javadoc。

如果我猜的话,可能是您有多个线程试图共享某种类型的 XML 解析器对象,而该对象未设计为共享

关于java - 这是循环死锁还是循环等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49067027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com