BTW, when Worker kills an executor, the ExecutorRunner.workerThread got interrupted, while the Executor process itself is destroyed. The above line in ExecutorRunner will not get executed, since the thread got interrupted. The executor state will not be set here. Instead, it is set in the ExecutorRunner.kill() as KILLED.