В соответствии с этой статьей SocketChannel не будет таймаутом для своей операции чтения, но вы можете получить этот эффект от чтения из канала по-другому.
SocketChannel socketChannel;
socketChannel.socket().setSocketTimeout(500);
InputStream inStream = socketChannel.socket().getInputStream();
ReadableByteChannel wrappedChannel = Channels.newChannel(inStream);
чтение из wrappedChannel будет тайм-аут в соответствии с параметром socketTimeOut, который вы установили.