当前位置: 首页 > 知识库问答 >
问题:

在sun.misc.unsafe.park等待(本机方法)

皇甫高阳
2023-03-14

我的一个应用程序在负载下运行了一段时间后挂起,有人知道在JStack中是什么导致了这样的输出吗:

"scheduler-5" prio=10 tid=0x00007f49481d0000 nid=0x2061 waiting on condition [0x00007f494e8d0000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006ee117310> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1085)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)

共有1个答案

于正志
2023-03-14

我也遇到了类似的问题,按照前面的回答(谢谢!),我能够搜索并找到如何正确处理ThreadPoolExecutor TerminaIson。

在我的例子中,这只是修复了类似阻塞线程的渐进增加:

>

  • 我在finally子句中使用了ExecutorService::AwaitTermination(x,TimeUnit)ExecutorService::ShutdownNow()(如果需要)。
  • 有关信息,我使用以下命令检测线程计数并列出锁定线程

    jcmd`ps-c java-o pid=`thread.print>>ThreadPrintDayaplusone.log

    cat threadprint*.log grep“pool-”wc-l

  •  类似资料:
    • 问题内容: 我的一个应用程序在负载下运行一段时间后挂起,有人知道是什么会导致jstack中的此类输出: 我在挂起的jstack输出中看到了很多。 我大量使用Spring @Async和地图,同步地图和ehcache。 有趣的是,这仅发生在一个应用实例上。另外两个运行得很好。在这种情况下,我还能进行哪些调查以获取更多详细信息? 问题答案: unsafe.park与thread.wait几乎相同,除了

    • 我还发现这个帖子在sun.misc.unsafe.park(本地方法)等待,但它对我的情况没有帮助。 在这种情况下,我还可以调查什么来获得更多细节?

    • 在实际应用中,我对 C# 中的异步和 await 方法进行了说明。请考虑以程,这是工作代码的简单版本: 助手.cs 功能控制器.cs processing.js 现在,问题是第三方服务的所需时间更少(例如:2秒),而所需的时间更多(例如:100秒)。进行两个ajax调用并使用异步和等待是为了呈现自我。屏幕上显示数据1,不要等到自己。Data2已被检索。不幸的是,这种情况没有发生,我必须等待100秒

    • 我不是新来的土生土长的。在开始之前,我已经通过了很多教程。我正在尝试在我的应用程序中建立商店,当需要时可以通过应用程序的屏幕访问。 这是我的文件结构。 index.ios.js /app/index.js /app/store/database.js /app/store/userstore.js index.ios.js /app/index.js /app/store/userstore.js

    • 我正在尝试将数据库调用移出控制器,以清理并使其可测试。当它们在控制器中时,一切都会顺利进行。我将它们移出控制器,并添加了一个异步,以确保我们等待。否则,我将调用的中的函数。现在,一旦我使用async/await,控制器中的函数就会认为没有用户,因为它没有等待。 有几个关于异步等待的SO问题,但我没有找到一个解决我的问题。我确实验证了返回了我的用户,并添加了控制台日志来显示路径。 节点猫鼬异步等待似

    • 迄今为止,我们所看到的所有解决方案都是为了在忙碌的等待中提供相互排斥。 然而,忙等待并不是资源的最佳分配,因为它始终在持续检查while循环条件时保持CPU繁忙,尽管进程正在等待临界区变为可用。 所有具有繁忙等待的同步机制也受到优先级反转问题的困扰,即每当存在具有较高优先级的进程必须在关键部分之外等待的进程时总会存在自旋锁的可能性,因为机制意图执行较低优先级 在关键部分进行处理。 然而,这些问题需