Вы не должны направлять тему исполнителю. Сначала это просто отходы, потому что единственный метод, который будет называться, это run()
, и вам просто нужен Runnable
и для этого не нужен Thread
.
Вторичный, в то время как эта проблема решается в последнем JDK, это было так, что проблема с утечкой памяти возникает, если вы создаете много объектов Thread
и не вызываете на них .start()
. В основном создание объектов Thread
выделяет некоторую память, которая может быть восстановлена только после вызова .start()
. Таким образом, выполнение executor.submit(thread)
потенциально опасно в ранних JDK (я думаю, что это было разрешено только в JDK6 или около того).
Возвращаясь к вашему вопросу, executor.submit (thread) недействителен. Это просто неправильно, потому что исполнитель использует свой собственный поток для выполнения runnable. В конце концов, все дело в использовании исполнителя. Вы хотите разделить задачу (вызов) и выполнение. Только если вы хотите предоставить исполнителю (потоку), вы должны использовать Thread
, но это редко необходимо. Как правило, рекомендуется использовать Runnable
и использовать исполнителей для его выполнения, а не для работы с Thread
.