В ExecutorService треды переиспользуются в этом и вся суть этих пулов.
Каждую задача что вы кидаете например Runnable попадает в очередь и потом выполняется ексекютором когда какой нибудь тред освободится.
Если посмотреть на названия тредов в екзекуторе - они будут примерно такими pool-2-thread-4
Достучатся до треда в котором выполняется ваш код, вы можете прям из Runnable или Callable смотря что вы там скармливаете executor'y
Thread.currentThread().getName() //например получить имя треда в котором выполняется Runnable
Если хотите прервать тред по каким то причинам, то примерно так.
Thread.currentThread().interrupt();