Olá.
Eu não tenho nenhum caso assim, mas estava curioso por uma solução p/ o seguinte problema (q eu não sei resolver).
Suponhamos que eu tenha um programa de comando de linha “comando.exe” que executa e, dependendo do input, exiba informações pelo stdout ou stderr.
Agora, eu quero ler as informações de output…independente do canal usado (ou seja, quero ler as duas ao mesmo tempo). Resposta, uso threads. Certo?
Process process = Runtime.getRuntime().exec(“comando.exe”);
DataInputStream processNormalOutput = new DataInputStream(process.getInputStream());
DataInputStream processErrorOutput = new DataInputStream(process.getErrorStream());
Mas, suponhamos que um comando só exiba informações por um dos canais, não pelo outro. Eu preciso parar a outra thread quando eu descubro que o programa não vai mais soltar informação (Por exemplo, já peguei o output por uma delas e descobri que acabou). Mas a outra thread está bloqueada esperando input. Eu não posso interromper uma thread que está bloqueada, posso? Como?
É isso…será que alguém sabe resolver esse problema…ou a thread tem que viver eternamente, esperando um input que nunca virá, até o final da vida do programa?
Até +
D u i