Как правило, нет. Входные потоки не обеспечивают функцию тайм-аута.
Однако, в вашем конкретном случае, то есть чтение данных из сокета, да. Что вам нужно сделать, это установить SO_TIMEOUT на вашем сокете в ненулевое значение (тайм-аут, который вам необходим в миллисекундах). Любые операции чтения, которые блокируют в течение указанного времени, выдают SocketTimeoutException
.
Однако будьте осторожны, так как даже после того, как ваше сокетное соединение останется в силе после этого, продолжение чтения из него может привести к неожиданному результату, так как вы уже наполовину израсходовали свои данные. Самый простой способ справиться с этим - закрыть соединение, но если вы отслеживаете, сколько уже прочитали, вы можете восстановить и продолжить чтение.