Spring で ThreadPoolTaskExecutor を使用してタスクをスケジュールします。
そのタスク実行者/プールの実行中およびキューに入れられたすべてのスレッドのリストまたは何かを取得する方法はありますか?
Spring で ThreadPoolTaskExecutor を使用してタスクをスケジュールします。
そのタスク実行者/プールの実行中およびキューに入れられたすべてのスレッドのリストまたは何かを取得する方法はありますか?
あまりエレガントではないかもしれませんが、この方法で既知の 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 のおかげで、キューに入れられたスレッドを取得するための彼のアプローチに賛成票を投じました。
getThreadPoolExecutorを呼び出すことで、基になるThreadPoolExecutorを取得できるようです。
これにより、少なくともキューにアクセスできるようになります。