Я поставил бы вопрос наоборот: почему должен перезапустить объект Thread?
Возможно, гораздо проще рассуждать о (и, возможно, реализовать) Thread что просто выполняет свою заданную задачу ровно один раз и затем окончательно завершается. Для перезапуска потоков потребуется более сложное представление о том, какое состояние было в программе в данный момент.
Поэтому, если вы не можете найти конкретную причину, по которой перезапуск данного Thread
является лучшим вариантом, чем просто создав новый с тем же Runnable
, я бы сказал, что дизайнерское решение к лучшему.
(Это в целом похоже на аргумент о изменяемых переменных vs final
- я нахожу конечные «переменные» гораздо проще рассуждать и скорее создали бы несколько новых постоянных переменных, чем повторное использование существующих.)
<Switch>
<Route exact path="/" component={App}/>
<Route path="/home" component={Dashboard}/>
<Route path="*" component={NotFound}/>
</Switch>