Если работающий поток содержит прямую или косвенную сильную ссылку на объект, такая ссылка не позволит объекту получить право на сборку мусора. Таким образом, на самом деле нет никакой причины иметь финализатор для такого объекта.
Однако, если поток будет релевантным только до тех пор, пока ссылка на какой-то другой конкретный объект удерживается чем-то отличным от потока, может быть полезно, чтобы поток содержал WeakReference
к этому другому объекту, и закройте себя, если тот другой объект выходит из области видимости. Это завершение может быть выполнено либо с помощью периодической проверки потока IsAlive
свойством WeakReference
, либо с помощью другого объекта, включающего финализатор, который будет сигнализировать отключению потока. Хотя периодический опрос для таких вещей в некотором смысле странен, и использование финализатора может несколько ускорить отключение потока, я думаю, что опрос, вероятно, все еще лучше. Хотя финализатор может уведомить поток о том, что он должен что-то сделать, и бывают случаи, когда это может быть уместно, в целом тот факт, что объект был завершен, означал, что никто не был чрезмерно обеспокоен быстрой очисткой. Добавление задержки еще на несколько секунд до отключения потока, вероятно, не повредит.