Java ExecutorService – How to Interrupt Threads

concurrencyexecutorservicejavamultithreading

When using the ExecutorService returned by Executors.newSingleThreadExecutor(), how do I interrupt it?

Best Answer

In order to do this, you need to submit() a task to an ExecutorService, rather than calling execute(). When you do this, a Future is returned that can be used to manipulate the scheduled task. In particular, you can call cancel(true) on the associated Future to interrupt a task that is currently executing (or skip execution altogether if the task hasn't started running yet).

By the way, the object returned by Executors.newSingleThreadExecutor() is actually an ExecutorService.