#java #multithreading #hashmap
#java #многопоточность #хэш-карта
Вопрос:
Допустим, у меня есть объект «myObj», который запускает повторяющийся поток, и я помещаю этот объект в хэш-карту.
Если я затем удалю запись для этого объекта, приведет ли это к остановке потока? Или мне нужно прервать поток перед удалением объекта?
Комментарии:
1. Как именно объект «запускает повторяющийся поток»? Что это значит? Потоки выполняются сами по себе, и они запускаются другими потоками. Объекты ничего не «делают». Они просто сидят там.
Ответ №1:
Удаление объекта из HashMap ничего не сделает с потоком, и он будет продолжать выполняться, если вы явно не остановите его.
Активные потоки Java всегда считаются живыми объектами и, следовательно, являются корнями GC. Это особенно важно для локальных переменных потока
Объект должен быть недоступен и не иметь корней GC, чтобы его можно было использовать для GC’ing.
Комментарии:
1. Хорошо, но разве сборщик мусора Java в конечном итоге не избавился бы от ресурсов объекта?
2. @user1625168 Каждый объект, который доступен из стека запущенного потока, является «активным» для GC.