use java.nio socket channels (interruptible alternative for ServerSocket.accept())