You can't rethrow that exception. It's a checked exception, which you can't rethrow from a Runnable.run() implementation, without laundering it. On the contrary, it's possible to do so with a Callable, since call() defines that it throws Exception. I still stand by my fix :)