catch IOException? why InterruptedException?

If you are going to catch InterruptedException, you probably need to Thread.currentThread().interrupt()