Jag har följande kod för att läsa input från en DataInputStream.
while(true){
try{
dtClientConsole.outWrite(
inputStream.readUTF()
);
}catch(IOException e){
Thread.yield();
}
}
Problemet är att denna kod tar upp för mycket CPU-kraft. Trots att jag kör Thread.yield(); (Den kallas oftast eftersom det i de allra flesta fallen inte finns någon data att läsa.) och har prövat att sätta trådens prioritet till lägsta, så tar den fortfarande lika mycket CPU.
dtClientConsole är en instans av en klass som jag har skrivit för att skriva till konsolen, och den är inte orsaken. (Jag har prövat att sätta inputStream.readUTF(); ensamt med samma resultat.)
Jag undrar om det finns något sätt att låta tråden sova tills det kommer nätverksdata?
Det är viktigt att datan tas emot direkt när den kommer, för jag vill undvika latency, men tycker samtidigt att det verkar dumt att vänta i en while(true)-loop. ("Dumbloop" som det kallas.)
Förslag?