Hallo,
ich suche eine bessere Lösung für mein Programm. In Main wird jede Sekunde abgefragt, ob sich die boolean Variablen auf dem Server geändert haben:
Die Klasse Task:
Das Problem ist, dass Task viele
hat. Dadurch werden andere Abläufe blockieret. Obwohl Task jede Sekunde aufgerufen werden soll (mit
), werden die booleanInput0 und booleanInput1 nicht jede Sekunde überprüft, und was in if-Scheilfen erledigt werden soll, wird nicht rechtzeitig erledigt. Ich vermute, das ist wegen zu viele Thread.sleep().
Kann mir jemand einen Ausweg empfehlen? Ich brauche wirklich eine Hilfe...:shock:
ich suche eine bessere Lösung für mein Programm. In Main wird jede Sekunde abgefragt, ob sich die boolean Variablen auf dem Server geändert haben:
Java:
final Timer timer = new Timer();
timer.schedule(new Task(), 2000, 1000);
Die Klasse Task:
Java:
public class Task extends TimerTask {
private String booleanInput0;
private String booleanInput1;
public void run() {
booleanInput0 = soapClient.readVariableBoolean("45255");
booleanInput1 = soapClient.readVariableBoolean("12345");
if (booleanInput0 == "true" && stateInput0.isEmpty()) {
// tue irgendwas
try {
Thread.sleep(3000);
} catch (InterruptedException e) {}
// tue irgendwas
if (stateInput0.get("state") == "1") {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {}
// tue irgendwas
else if (stateInput0.get("state") == "2") {
// tue irgendwas
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {}
}
if (booleanVariableInput0 == "false"
&& stateInput0.get("state") == "1") {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {}
// tue irgendwas
if (stateInput1.get("state") == "1") {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {}
// tue irgendwas
}
}
if (booleanInput1 == "true" && stateInput1.isEmpty()) {
// mache dasselbe für booleanInput1
}
}
}
Das Problem ist, dass Task viele
Code:
Thread.sleep()
Code:
timer.schedule(new Task(), 2000, 1000)
Kann mir jemand einen Ausweg empfehlen? Ich brauche wirklich eine Hilfe...:shock: