Hi,
ich habe in meinem Programm einen InputStream mInput, dessen Inhalt sich in unregelmäßigen Abständen ändert. Jedes mal wenn sich der Inhalt ändert soll er analysiert werden.
Um ihn auf Veränderung zu prüfen, habe ich bisher folgenden Code:
Das Problem hierbei ist allerdings der unverhältnissmäßige Ressourcenverbrauch. Zwar verwende ich Thread.yield(); aber das scheint nicht viel zu helfen. An dem Verbrauch ist wohl die ständige Prüfung der while-Bedingung Schuld.
Jetzt will ich fragen ob es einen entsprechenden Listener gibt, der bei Veränderung eines InputStreams ausschlägt und somit von sich aus meldet ob was passiert ist, statt die ganze Zeit aktiv zu überprüfen zu müssen.
ich habe in meinem Programm einen InputStream mInput, dessen Inhalt sich in unregelmäßigen Abständen ändert. Jedes mal wenn sich der Inhalt ändert soll er analysiert werden.
Um ihn auf Veränderung zu prüfen, habe ich bisher folgenden Code:
Java:
String refdata = "";
//output ist ein String der den Inhalt des InputStreams enthält.
//output wird bei Änderung des InputStreams mInput mitverändert (anderer Thread)
while(true){
while(output.equals(refdata)){
Thread.yield();
}
refdata = output;
System.out.println("<!-- Event triggered. -->");
}
Das Problem hierbei ist allerdings der unverhältnissmäßige Ressourcenverbrauch. Zwar verwende ich Thread.yield(); aber das scheint nicht viel zu helfen. An dem Verbrauch ist wohl die ständige Prüfung der while-Bedingung Schuld.
Jetzt will ich fragen ob es einen entsprechenden Listener gibt, der bei Veränderung eines InputStreams ausschlägt und somit von sich aus meldet ob was passiert ist, statt die ganze Zeit aktiv zu überprüfen zu müssen.