Для целей отладки я хотел бы прослушать состояние потоков. Я хочу, чтобы он печатал уведомление, когда поток ожидает в журнале и всякий раз, когда он «возобновляет».Java listen on Thread state
ответ
Метод GetState() из нити возвращает Thread.State, который может быть:
NEW, Runnable, BLOCKED, ЖДАТЬ, TIMED_WAITING или TERMINATED
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' не является потокобезопасным! –
Кроме того, где вы хотите поместить этот код? Состояние резьбы может меняться очень часто. Ваш код не является объявлением слушателя, это своего рода монитор –
Я не думаю, что там хороший способ контролировать состояние потока «программно». Однако вы можете использовать один из профилирующих инструментов, например VisualVM (Существует много других, но я лично предпочитаю этот).
Вы также можете обратиться к этому официальному лицу documentation о том, как вы можете отслеживать потоки вашего приложения с помощью VisualVM.
Вы можете расширить класс Thread, и в своем классе вы можете разрешить прослушиванию зарегистрироваться в своем классе, и он будет уведомлен вашей нитью каждый раз, когда состояние будет изменено. Это возможно, но я думаю, что это станет очень сложным решением, так как вам нужно будет гарантировать, что все потоки вашего кода будут использовать ваш класс, а не обычный. Короче ИМХО его не стоит truble
- 1. run() on terminated state thread
- 2. pthread thread state
- 3. The Thread is On WaitSleepJoin State и больше не работает
- 4. Thread wont start on Java
- 5. Java thread on resultset oracle
- 6. GMainLoop и TCP Listen thread blocking
- 7. socket.io http listen on localhost
- 8. toggle current thread flag state
- 9. Как сравнить с Thread State
- 10. On State Change
- 11. Change State on Press
- 12. Действие Java/Groovy on-thread-exit
- 13. Akka java thread choke on multiple JVM
- 14. Java lock and unlock on different thread
- 15. Java ServerSocket Несколько экземпляров Listen
- 16. Crashlogs: Что такое «ARM Thread State»
- 17. On Auth State изменил AngularFire
- 18. React update state on click
- 19. On state select изменить страну
- 20. BackgroundTask trigger on battery state
- 21. Вниз state on clickable TextView
- 22. TreeView thansfer on checkbox state
- 23. Java Thread NullPointerException с ServerSockets
- 24. cout on extra thread - thread safety
- 25. thread Lock on Custom Thread python
- 26. Wake Thread On Signal
- 27. Crash on NSURLConnection thread
- 28. CheckPixelColor on thread
- 29. dealloc on Background Thread
- 30. WScript.Shell.run on multi thread
Один дешевый способ сделать это - взять дамп потока с помощью таких инструментов, как 'jstack'. –