私は私のプログラムの実行中のスレッドを表示するには、以下のコードを実行しているハング
public void printTasks() {
System.out.println("get threads start");
for (Thread thread : Thread.getAllStackTraces().keySet()) {
//This block filters the non-java threads running
if (!thread.getThreadGroup().getName().equals("system")) {
System.out.println("hello");
}
}
System.out.println("get threads end");
}
問題は時々、コードだけで、印刷後にハングすることを「スレッドを取得している
"Thread.getAllStackTraces()"というメッセージが表示されます。
注:私のプログラムはスレッドを使って一連のタスクを実行します。スレッドは〜70スレッドを生成し、ハングは断続的ですが、私がこの方法と呼ぶ6回または7回に1回だけ問題が現れる。
私の質問は:
- これは既知の問題ですか?
- この現象を防ぐ方法はありますか?
- 実行中のスレッドをリストするより安全な方法はありますか?
編集:私は、Java 1.8を使用しています、問題はそれが断続的に両方のケースでは、LinuxのOELおよびWindows Serverで発生し、ソフトウェアは
は事前
にありがとうスタンドアロンのデスクトップアプリケーションとして実行されます
あなたが実行しているのJavaのバージョンは何、そしてどのようなOS上で役に立てば幸い、不変オブジェクト
より良い解決策は歓迎ですが読むには?これはスタンドアロンのアプリケーションですか、何らかの種類のアプリサーバーですか? –