Differenz zwischen 2 Zeitpunkten berechnen

saftmeister

Nutze den Saft!
Hmm, ich weiß auch noch nicht, was der Code bezwecken soll. Was das Objekt scheduler macht, kann man nur aus dem Kontext raus schließen. Dann soll aber das Objekt "object" zweil mal zerstört werden. Sehr komisch, das ganze :)
 

nchristoph

Erfahrenes Mitglied
Das Object soll entweder zerstört werden, wenn der actor mehr als 50 meter davon entfernt ist bzw. spätestens nach 60 Sekunden.

Das Objekt Scheduler sieht so aus:
Java:
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

Wenn ich jetzt Thread.sleep(60000) mache, wird der Thread komplett gestoppt.

Wäre es vielleicht besser, ich mach hier 2 Threads?
 

Fabio Hellmann

Erfahrenes Mitglied
Also wenn ich deine Idee mal grob abstrahieren darf.

1. Dein Objekt wird erzeugt
2. Irgendwas/Irgendwer entfernt sich schnell/langsam
3. Objekt wird zerstört, weil Entfernung > 50m oder 60 Sekunden abgelaufen sind

Wenn das so stimmt, würde ich folgenden Vorschlag machen:
1. Wenn du dein Objekt erzeugst, speicherst du in einer Variablen die aktuelle Systemzeit ab.
Java:
myObject = new Object();
creationTimestamp = System.currentTimeMillis();
2. Du registrierst bei deinem Objekt einen Listener, der informiert wird, ob die Distanz überschritten wurde.
Java:
myObject.setDistanceListener(new DistanceListener() {...});
...
public interface DistanceListener {
   void distanceAlert(long distance);
}
3. Du implementierst einen konkreten DistanceListener, der dir dann dein myObject zerstört bzw. myObject = null setzt.
4. Je nachdem, ob du in deinem Main-Thread weitere wichtige Operationen erledigen musst oder nicht:
Main-Thread: Ich würde dir empfehlen direkt nach der Erzeugung des Objekts und der Abfrage von der Systemzeit eine While-Schleife zu machen, in der du in der Bedingung abfrägst, ob die Zeit überschritten wurde, oder das Objekt bereits zerstört (null) ist.
Externer-Thread: Macht im Prinzip das gleiche, wie ich es im Main-Thread erklärt habe, nur in einem eigenen Thread, sodass du deinen Main-Thread für weitere Operationen frei hast und nicht blockierst.
 

Neue Beiträge