that's not enough, we still should throw an exception. otherwise the thread will never be terminated. should be like this:

```
} catch (final InterruptedException ex) {
  Thread.currentThread().interrupt();
  throw new IllegalStateException(ex);
}
```

Highly recommend you to read this book: http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601