sun.misc.Unsafe.park由JDBC调用触发

时间:2016-10-31 08:43:04

标签: java multithreading jdbc

在我们的应用程序中,我们看到线程通过调用sun.misc.Unsafe.park方法花费了大量时间。我们注意到这种模式通常是由对数据库的JDBC调用触发的。

我对Unsafe.park方法了解不多。我想知道这是否是正常的行为,表明线程正在等待来自数据库的输入,或者如果我们的应用程序存在某些同步问题,我们可以改进。

你知道这两者中的哪一个?另外,您是否知道我们可以进一步调查此事的方法?

1 个答案:

答案 0 :(得分:2)

sun.misc.Unsafe.park与thread.wait几乎相同,但是它使用了体系结构相关的代码,因为park是本机调用,它可以获得性能上的好处(它是一个受欢迎的java.util.concurrent中的模式,例如,您可以在parkConcurrentLinkedQueue中查看thread pooloing的使用情况。显然,您有一个多线程环境,并db connections使用thread pool用于自己的目的。在jdk中parking带来了显着的优化。

关于你使用JDBC的情况,我建议你的情况会发生死锁。所有线程都在等待某个事件。您可以调查一下deadlock,我建议您阅读这篇文章:

  

jdbc-deadlock-avoidance

     

jdbc and deadlocks manual

HTH