2
  1. 我有一个 Java 应用程序,我在其中使用来自 oswego 的 PooledExecuter。
  2. 我强烈怀疑我的应用程序中存在线程争用,无论是否使用 PooledExecuter,请求都需要时间 = 大约没有请求 * 一个请求的时间。
  3. 我想收集证据表明肯定存在线程争用。
  4. 有什么方法可以设置一些 JVM 参数,这些参数可以告诉我不同​​的线程正在做什么,或者任何其他有助于检测线程争用的方法。
4

2 回答 2

2

从您的描述看来,您有一个单线程资源,而您的代码无法有效地使用多个线程。您应该能够通过在发生这种情况时(几次)进行线程转储来看到这一点。您应该看到一个线程在做“真正的”工作,而池中的所有其他线程都在等待某事或空闲。

于 2012-04-19T12:58:44.360 回答
1

我不知道可以告诉您这一点的 jvm 选项,我会在其上附加一个分析器并查看线程是否正在竞争(阻塞/等待)很多,然后查看它们正在竞争哪些锁。

于 2012-04-19T12:54:00.237 回答