Hi.
Ich versuch mich einmal kurz zu fassen und das ganze (fast) ohne Quelltext zu erklären, da es mittlerweile etwas mehr geworden ist.
Ich habe ein Programm welches 2 Thread startet.
Der erste Thread ruft ständig repaint() auf, damit ein Panel, indem ich scrollen und ranzoomen kann usw ständig aktuell gehalten wird.
Ein zweiter Thread soll alle x sekunden eine Funktion aufrufen.
Das funktioniert soweit noch ganz gut.
Jetzt habe ich dem zweiten Thread noch eine Funktion hinzugefügt, die man wahlweise starten kann.
Nur wenn ich hier ein sleep() mit einbaue, dann bleibt bei diesem sleep das ganze Programm stehen.
DARF man keine extra Funktionen zu einem Thread hinzufügen?
Das funktioniert. Er zeichnet die ganze Zeit durch und ruft alle paar Sekunden die Funktion auf.
Diese Funktion funktioniert nicht mehr. Bei diesem sleep() steht das gesamte Programm.
Sinn der sache ist, dass ich eine Simulation schreibe und generell soll er alle x sekunden den nächsten Schritt aufrufen. Aber ich möchte die Simulation auch pasieren können und beispielsweise 5 Schritte manuell ausführen. Dafür ist die extra Funktion.
Irgendwelche Vorschläge, woran es liegen kann?
Ich versuch mich einmal kurz zu fassen und das ganze (fast) ohne Quelltext zu erklären, da es mittlerweile etwas mehr geworden ist.
Ich habe ein Programm welches 2 Thread startet.
Der erste Thread ruft ständig repaint() auf, damit ein Panel, indem ich scrollen und ranzoomen kann usw ständig aktuell gehalten wird.
Ein zweiter Thread soll alle x sekunden eine Funktion aufrufen.
Das funktioniert soweit noch ganz gut.
Jetzt habe ich dem zweiten Thread noch eine Funktion hinzugefügt, die man wahlweise starten kann.
Nur wenn ich hier ein sleep() mit einbaue, dann bleibt bei diesem sleep das ganze Programm stehen.
DARF man keine extra Funktionen zu einem Thread hinzufügen?
Java:
public void run(){
while(true){
sa.callNextStep();
try {
sleep(waitTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Java:
public void runSteps(int steps){
for(int i=0;i<steps;i++){
sa.callNextStep();
try {
sleep(waitTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Sinn der sache ist, dass ich eine Simulation schreibe und generell soll er alle x sekunden den nächsten Schritt aufrufen. Aber ich möchte die Simulation auch pasieren können und beispielsweise 5 Schritte manuell ausführen. Dafür ist die extra Funktion.
Irgendwelche Vorschläge, woran es liegen kann?