7

Spring で ThreadPoolTask​​Executor を使用してタスクをスケジュールします。

そのタスク実行者/プールの実行中およびキューに入れられたすべてのスレッドのリストまたは何かを取得する方法はありますか?

4

3 に答える 3

3

あまりエレガントではないかもしれませんが、この方法で既知の Executor からすべてのスレッドを取得できます (startsWith()プレフィックスを使用)。

Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
for (Thread thread : threadSet) {
  if (thread.getName().startsWith("MyExecutor")) {
  System.out.println(thread.getName() + " " + thread.getState());
    for (StackTraceElement s : thread.getStackTrace()) {
      System.out.println(s);
    }
  }
}

ヒントをくれた Surveon のおかげで、キューに入れられたスレッドを取得するための彼のアプローチに賛成票を投じました。

于 2013-08-16T21:18:55.507 に答える
0

getThreadPoolExecutorを呼び出すことで、基になるThreadPoolExecutorを取得できるようです。

これにより、少なくともキューにアクセスできるようになります。

于 2013-08-16T15:33:59.250 に答える