デバッグの目的で、スレッド状態でリッスンしたいと思います。スレッドがログを待っているときと、いつでも「再開」するたびに通知を出力したい。スレッドのJavaはスレッド状態でリッスンします
答えて
方法getStateを()が可能Thread.Stateを返します。
NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITINGまたは
Thread.State state = getThreadInQuestion().getState();
if(state == Thread.State.WAITING) {
System.out.println("Waiting");
} else if(state == Thread.State.RUNNABLE) {
System.out.println("Running");
}else{
System.out.println("Neither running nor waiting")
}
これはおそらくそれだけではない部分的な答えです。いつどのように印刷するのか分かりますか?つまり、スレッドはスレッドが再開したことをOPがどのように認識しますか? – bradimus
'System.out.println'はスレッドセーフではありません! –
また、このコードをどこに配置しますか?スレッドの状態は頻繁に変更される可能性があります。あなたのコードはリスナー宣言ではなく、ちょっとしたモニターです –
をTERMINATED私はそこにはないと思います「プログラム的に」スレッド状態を監視する良い方法です。しかし、VisualVMのようなプロファイリングツールの1つを使用することができます(他にもたくさんありますが、私は個人的にこれを好みます)。
VisualVMを使用してアプリケーションのスレッドを監視する方法については、この公式documentationを参照することもできます。
VisualVM threads monitoringを使用してください。
スレッドクラスを拡張することができます。クラスでは、リスナーをクラスに登録させることができ、状態が変更されるたびにスレッドによって通知されます。可能ですが、コード内のすべてのスレッドがクラスを使用していて、正規のスレッドではないことを保証する必要があるため、非常に複雑なソリューションになると思います。短いIMHOの中では、その部分が有効ではない
- 1. Javaスレッド:マルチスレッド - 競合状態
- 2. pthreadスレッド状態
- 3. Java不正なスレッド状態例外コーディングエラー
- 4. Javaスレッドの拡張runnable状態
- 5. WebSphereのWebコンテナ・スレッドは、実行可能な状態で最大スレッド状態でハングします
- 6. Javaスレッドの状態はどういう意味ですか?
- 7. Javaでスレッドの状態を監視する方法は?
- 8. Crashlogs: "ARMスレッド状態"とは
- 9. Javaマルチスレッドでのスレッド状態のしくみ
- 10. フラスコセッション変数はスレッド間で状態を維持しますか?
- 11. スレッドが起動しない他のスレッドがビジー状態です
- 12. C#スレッド競合状態
- 13. pthread_cond_waitはスレッドを待機状態にします
- 14. ActiveMQトランスポート:tcp:スレッドRUNNABLE状態 - スレッドが多すぎます
- 15. iPhone - 待ち状態のスレッドのスレッドを解除していないスレッド状態信号
- 16. 終了したJavaスレッドの中断状態を取得する方法は?
- 17. スレッドの中断状態の利点は?
- 18. Cでスレッドの状態を取得++ /窓
- 19. Javaスーパーパッケージの状態は?
- 20. RxJavaスケジューラはスリープ状態のスレッドを変更しません
- 21. 競合状態をスレッド化し、スレッドをスリープ状態にするためにタイマを使用する
- 22. Java - システムセーフペーストコマンドをリッスンします
- 23. Java - ExecutorServiceと明らかにアイドル状態のスレッド
- 24. 制限または休止状態(Java)
- 25. redux経由で状態が変化したときにリッスンする - ReactJS
- 26. スレッドは実行状態から実行可能状態にどのように移行しますか?
- 27. 子スレッドはどのように親スレッドに状態/進捗状況を通知できますか?
- 28. アプリケーション状態を管理するスレッドまたはステートマシン?
- 29. Couchbaseスレッドはブロック状態にあります
- 30. Java Swing GUI - スレッドを常時スリープ状態にして、クリックで目を覚ます方法は?
これを実行する安価な方法の一つは、 'jstack'のようなツールを使ってスレッドダンプを取ることです。 –