verzögerung in einer methode

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,


ich habe folgendes Problem: wenn ich eine Button drücke wird in meinem Programm eine Methode aufgerufen. diese Methode sendet einen Buffer über die serielle Schnittstelle zu einem anderen Computer.
Mein Problem ist jetzt, dass in der Methode gewartet werden muss, bis ein Flag 0 ist, dann darf erst geschrieben werden.

Wie kann ich das am besten machen, dass das Programm normal weiterläuft und nur in der MEthode unten eben gewartet wird?

Lg
Michl




Code:
 private boolean flag = 0;
 ...

 public static void writeToRemote()
        {   
        // warten, bis Flag 0 ist und dann erst schreiben  
        SerielleSchnittstelle.write(buf);                               
        }
 
flag ist doch 0...oder wie? aber ich würde sagen, wenn es 'parallel' laufen soll, kannst du nen thread nehmen....

grüße
 
nein flag ändert sich (...)
ich weiß nicht genau, wie ich den Thread in meine Methode einbauen soll,
Wie kann ich das dem Thread sagen, dass er erst schreiben soll wenn flag == 0 ist?

lg und Danke
Michl



Code:
private boolean flag = 0;
...

public static void writeToRemote()
        {   
        wenn flag == 0 ist dann:
        SerielleSchnittstelle.write(buf);                               
        }
 
also du musst eben deine methode in dem thread aufrufen...schau dir das mal an. ich seh das doch richtig?

- dein programm läuft, irgendwann ist flag == 0
- dann soll die methode parallel zum programm starten und was tun

korrekt?

grüße
 
ja dann ist das doch recht einfach: also so:



Code:
class WriteThread extends Thread {
        
        public void run() {
            SerielleSchnittstelle.write(buf);
        }
}

Code:
if(flag==0){
        Thread thread = new WriteThread();
        thread.start();
}

so sollte es gehen, wenn ich dich recht verstanden habe.

grüße
 
Die Abfrage ob flag gleich 0 ist, muß natürlich in die run-Methode mit rein.

Wo wird denn flag geändert? Außerhalb der run-Methode?
 
Also so um unnötige CPU-Last zu vermeiden:
Code:
public void run() { 
  while (flag != 0) {
    try {Thread.sleep(1000);} catch(InterruptedException e) {}
  serielleSchnittstelle.write(buf); 
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben