A method I am calling in run() in a class that implements Runnable) is designed to be throwing an exception.
But the Java compiler won\'t let me do that and suggests
You can use a Callable instead, submitting it to an ExecutorService and waiting for result with  FutureTask.isDone() returned by the ExecutorService.submit(). 
When isDone() returns true you call FutureTask.get(). Now, if your Callable has thrown an Exception then FutureTask.get() wiill throw an Exception too and the original Exception you will be able to access using Exception.getCause().