У меня есть Java-класс, для которого требуется параллельный запуск монитора при создании экземпляра. Я хочу, чтобы этот монитор работал, пока экземпляр больше не работает, или на него не ссылаются. Обычно я использую активный флаг как переменную, которая закрывается, когда класс выключается/закрывается, однако это нужно тщательно контролировать, и его нужно вызывать при закрытии. Мне также известно о члене finalize объекта, но, насколько я помню, небезопасно использовать его или для этого? Кроме того, монитор, возможно, имеет круговые ссылки на контролируемый объект, но это может быть другой проблемой.Запускать thread до тех пор, пока объект/родительский не разыменован
3
A
ответ
3
Вам может понравиться объект, который будет контролироваться в потоке, используя WeakReference. Это позволяет сборщику мусора собирать и уничтожать объект. В потоке вам нужно будет проверять каждый раз, если ссылочный объект все еще существует каждый раз, когда вы выполняете свои проверки. Если он больше не существует, вы можете спокойно выйти из потока.
Поскольку сборщик мусора не сразу уничтожает объекты, может существовать неизвестный промежуток времени, когда протекторы все еще активны, но контролируемый объект больше не используется.
Смежные вопросы
- 1. До тех пор, пока цикл не выйдет
- 2. Повторение Паскаля ... до тех пор, пока против C не ... пока
- 3. Рубиновое сканирование/до тех пор, пока EOF
- 4. До тех пор, пока Onkey {RIGHT}
- 5. До тех пор, пока в Windows Powershell
- 6. Count элемент до тех пор, пока смещение
- 7. JVM не выходит до тех пор, пока поток не завершится
- 8. Как спать до тех пор, пока не будет выполнено условие
- 9. Голанг до тех пор, пока не будет нажата клавиша
- 10. ExecutorService не блокируется до тех пор, пока нить finishe
- 11. Приостановить поток до тех пор, пока WebBrowser не закончит загрузку
- 12. Приостановка нового BackGroundWorker до тех пор, пока предыдущие не завершатся
- 13. Выполнение программы до тех пор, пока не будет нажата кнопка
- 14. Угловая не найдена до тех пор, пока она не понадобится?
- 15. UIPickerView не появляется до тех пор, пока не произойдет прикосновение
- 16. ProgressDialog не отображается до тех пор, пока AsyncTask не завершится
- 17. Клиент GCDAsyncSocket не читает до тех пор, пока не напишет
- 18. Страница не отображается до тех пор, пока BackgroundWorker.RunWorkerAsync не завершит
- 19. Javascript не работает до тех пор, пока не обновится
- 20. onNewIntent() не срабатывает до тех пор, пока телефон не проснется
- 21. Не нажимайте до тех пор, пока не будет отпущена кнопка
- 22. jQuery scrollTop не обновляется до тех пор, пока не прокрутится
- 23. События не работают до тех пор, пока видео не буферизуется
- 24. Java Game - не рисовать до тех пор, пока Thread.sleep
- 25. Android-поток ждать до тех пор, пока не будет видно
- 26. PHP Включает - Не запускать до тех пор, пока не будет закончен
- 27. Не запускать функцию до тех пор, пока .hide() не закончит свою анимацию
- 28. QGraphicsScene mouseMoveEvent не работает до тех пор, пока QGraphicsView wheelEvent
- 29. Повторяя метод до тех пор, пока не будут выполнены условия
- 30. Перейти до тех пор, пока не осталось листа
Где неизвестный временной интервал может быть «никогда». – Voo
«Никогда», иначе «до сбора мусора» является приемлемым/прекрасным со мной в этом контексте. Спасибо за быстрый ответ. – Thomas