G
Gelöschtes Mitglied 9226
Gast
Hallo,
mal wieder stehe ich vor einem Problem, dass ich auf einen schlechten Code meinerseits zurückführe. Jedoch benötige ich nen Denkanstoss, wie ich aus dieser Einbahnstrasse wieder herauskommen...
Folgendes Szenario:
Ich habe einen Thread:
In diesem rufe ich nun, je nach Status (wird über die Konstanten dargestellt), Funktionen auf.
In den Funktionen wird der Status, nach deren Abarbeitung, auf den nächsten Wert gesetzt.
Nun habe ich aber das Gefühl, dass sich die Dinge hier manchmal überschlagen. Ich habe mir mal während der Laufzeit den requestState anzeigen lassen und die erwartetend Werte stimmen manchmal nicht mit den tatsächlichen überein.
Daher glaube ich, dass mein Code hier nicht gut ist.
Hat jemand einen Vorschlag, wie ich es besser machen kann?
Wichtig ist, dass der Thread immer wieder in Schleife läuft bis, die nächste Bedingung, passend zum aktuellen requestState, erfüllt ist. Das funktioniert hier ja auch generell, aber ich habe das Gefühl, dass es dennoch kein stabiler Code ist ...
mal wieder stehe ich vor einem Problem, dass ich auf einen schlechten Code meinerseits zurückführe. Jedoch benötige ich nen Denkanstoss, wie ich aus dieser Einbahnstrasse wieder herauskommen...
Folgendes Szenario:
Ich habe einen Thread:
Java:
public class WorkerThread extends Thread{
private final static int NOT_READY_FOR_OPERATIONS = 0;
private final static int GOING_TO_BE_READY_FOR_OPERATIONS = 1;
private final static int READY_FOR_OPERATIONS = 2;
private final static int NOT_CONNECTED_TO_ROUTER = 3;
private final static int WAITING_FOR_CONNECTION = 4;
private final static int CONNECTED = 5;
private int requestState = 0;
//[...] und so weiter
}
In diesem rufe ich nun, je nach Status (wird über die Konstanten dargestellt), Funktionen auf.
Java:
public void run(){
try{
// Arbeitsschritte
//
switch(requestState){
case NOT_READY_FOR_OPERATIONS:
doThis();
break;
case GOING_TO_BE_READY_FOR_OPERATIONS:
doThat();
break;
case READY_FOR_OPERATIONS:
doSomethingElse();
break;
case WAITING_CONNECTION:
doWhatEver();
break;
}
Thread.sleep(100);
}catch(Exception e){
// Meldung
}
}
In den Funktionen wird der Status, nach deren Abarbeitung, auf den nächsten Wert gesetzt.
Java:
private void doThis(){
// es passiert etwas
// [...]
// Bedingung prüfen
if(Bedigung == true){
requestState = READY_FOR_OPERATIONS;
}
}
Nun habe ich aber das Gefühl, dass sich die Dinge hier manchmal überschlagen. Ich habe mir mal während der Laufzeit den requestState anzeigen lassen und die erwartetend Werte stimmen manchmal nicht mit den tatsächlichen überein.
Daher glaube ich, dass mein Code hier nicht gut ist.
Hat jemand einen Vorschlag, wie ich es besser machen kann?
Wichtig ist, dass der Thread immer wieder in Schleife läuft bis, die nächste Bedingung, passend zum aktuellen requestState, erfüllt ist. Das funktioniert hier ja auch generell, aber ich habe das Gefühl, dass es dennoch kein stabiler Code ist ...
Zuletzt bearbeitet von einem Moderator: