Я знаю, что все потоки демона должны быть уничтожены, если нет другого потока, не являющегося демоном.Я разрабатываю апплет, который получает данные от статических объектов.Эти статические объекты загружают некоторые данные с удаленного сервера в поток демона.Несколько апплетов могут обращаться к одним и тем же данным, поэтому нет смысла запускать поток для каждого апплета.Проблема в том, когда я перезагружаю страницу.Апплеты перезагружаются, и они регистрируются в этих статических объектах, и все будет хорошо, за исключением того, что тогда JVM убивает потоки демона.
Может быть, я объясню шаг за шагом:
- Апплет загружаетсяон регистрируется в статическом объекте, который предоставляет данные.
- Статический объект запускает поток демона.
- Перезагрузка страницы.
- Апплет выгружается (вызываются stop () и destroy ())
- Создается новый экземпляр апплета, который регистрируется в статическом объекте.
- JVM создает ThreadDeath в потоке демона, и связь прекращается.
На мой взгляд, шаг6 должно быть после 4 и до 5. Я что-то упустил?
Обходное решение, которое я разработал, - это некоторое время спать перед регистрацией в статическом объекте, чтобы позволить JVM уничтожать демонов, а затем автоматически создается демон, но это толькообходной путь.Есть ли какое-нибудь лучшее решение?