É possível interromper um segmento específico de um ExecutorService?

Se eu tiver umExecutorService para o qual eu alimento tarefas Runnable, posso selecionar uma e interrompê-la?
Eu sei que posso cancelar o futuro retornado (também mencionadoAqui: how-to-interrupt-executors-thread), mas como posso levantar umInterruptedException. Cancel não parece fazê-lo (embora o evento deva observar as fontes, talvez a implementação do OSX seja diferente). Pelo menos esse trecho não imprime "isso!" Talvez eu esteja entendendo mal alguma coisa e não é o costume que consegue a exceção?

public class ITTest {
static class Sth {
    public void useless() throws InterruptedException {
            Thread.sleep(3000);
    }
}

static class Runner implements Runnable {
    Sth f;
    public Runner(Sth f) {
        super();
        this.f = f;
    }
    @Override
    public void run() {
        try {
            f.useless();
        } catch (InterruptedException e) {
            System.out.println("it!");
        }
    }
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
    ExecutorService es = Executors.newCachedThreadPool();
    Sth f = new Sth();
    Future<?> lo = es.submit(new Runner(f));
    lo.cancel(true); 
    es.shutdown();
}

}

questionAnswers(1)

yourAnswerToTheQuestion