Qualquer maneira de usar java.nio. * Para interromper um InputStream # read () sem fechar o soquete?

Você conhece uma maneira de interromper uma leitura de um JavaInputStream sem fechar o soquete associado?

Aqui está a estratégia de construção atual para capturar um fluxo de entrada de soquete e converter para um DataInputStream interruptível:

InputStream interruptibleInputStream = Channels.newInputStream(Channels.newChannel(m_ConnectionData.getSocket().getInputStream()));
DataInputStream myInterruptibleDIS = new DataInputStream(interruptibleInputStream);

Isso faz uso de umReadableByteChannel que oferece umread(ByteBuffer) método com suporte para umClosedByInterruptException jogável.

O problema é que chamar uma interrupção no encadeamento fazendoread() chama oDataInputStream faz com que o soquete subjacente seja fechad

Para meu contexto, preciso que o soquete permaneça aberto; aread chamada @ está aguardando a entrada do usuário, o que não está chegando; portanto, estou usando a interrupção para passar o controle de volta para um componente superior e, finalmente, retornando pararead novamente

Ficaria muito grato se alguém pudesse sugerir uma maneira de conseguir isso usando as classes incorporadas do JDK, ou talvez lembrando que não é possível com algumas informaçõe

Entendo que existem outras maneiras de obter o mesmo efeito, mas, no entanto, estou curioso para saber se essa abordagem é viáve

questionAnswers(1)

yourAnswerToTheQuestion