JavaFX uruchamianie watku o określonej godzinie

Odpowiedz Nowy wątek
PoczatkujacaProgra
2014-12-28 16:38
PoczatkujacaProgra
0

Witam

Zmagam sie z takim problemem.
Posiadam liste LinkedList w której zapisałam godziny wykonania danej metody.
Jak w JavieFx mogę napisać metodę w której o określonej porze będzie uruchamiała metoda.
Czyli jeżeli mam 12:00 12:04 12:00 to metoda która jest na oddzielnym wątku uruchamiała sie właśnie o tych godzinach. Prosze pomóżcie.

Pozostało 580 znaków

2014-12-28 16:50
Moderator

Rejestracja: 12 lat temu

Ostatnio: 3 miesiące temu

0

Timer? https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

M
2014-12-29 11:57
M
0

Robiłam tak ale problem w tym jest że watki musza uruchamiac sie o konkretnej godzinie. Zrobiłam to w ten sposób

    private void startPlane(){
        LocalTime nowTime= LocalTime.now();
        currentFlightId =FlightList.getNextFlight(); //wyznaczanie id najblizszego lecącego samolotu
        Flight currentFlight =FlightList.getListflight().get(currentFlightId); //samolot lecacy najszybciej
        differenceTime=Duration.between(LocalTime.now(),currentFlight.getDepartureTime()).getSeconds(); //za ile ma on wyleciec

        timer.schedule(task,0,differenceTime*1000); //opóznienie ze samolot musi czekać x czasu aby wyleciec (podane w ms);

    }

    public class MyTask extends TimerTask 
    {
         public void run() 
         {  
                Flight currentFlight =FlightList.getListflight().get(currentFlightId);
                mapViewController.startFlight(currentFlight.getFlightFrom(), //start samolotu 
                        currentFlight.getFlightTo());
                currentFlightId=currentFlightId+1; //kolejny samolot
                differenceTime=Duration.between( LocalTime.now(),currentFlight.getDepartureTime()).getSeconds(); //roznica  
         }
    }
edytowany 1x, ostatnio: bogdans, 2016-12-13 18:26

Pozostało 580 znaków

2014-12-29 12:16
Moderator

Rejestracja: 12 lat temu

Ostatnio: 3 miesiące temu

0

Zajrzałaś do dokumentacji?

public void schedule(TimerTask task,
Date time)

Schedules the specified task for execution at the specified time. If the time is in the past, the task is scheduled for immediate execution.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

M
2014-12-29 13:25
M
0

Czytałam, ale u mnie jest taki problem że uruchamiam najpierw jeden obiekt, potem np. po minucie drugi, po 2 minutach trzeci. Nie ma określonego interwału
I jezeli zrobie nawet coś takiego

    private void startPlane(){

        int sizeList=FlightList.getListflight().size();

        for(currentFlightId=FlightList.getNextFlight() ; currentFlightId < sizeList ;currentFlightId++){
            System.out.println("HAHHAHAHAHHA");
            currentFlight =FlightList.getListflight().get(currentFlightId);
            Date departuretimeDate= convertLocalTimetoDate(currentFlight.getDepartureTime());
            timer.schedule(task,departuretimeDate);

        };

    }
    public class MyTask extends TimerTask 
    {
         public void run() 
         {  
                Flight currentFlight =FlightList.getListflight().get(currentFlightId);
                mapViewController.startFlight(currentFlight.getFlightFrom(),
                        currentFlight.getFlightTo());
                timer.cancel();
         }
    }

to wywala mi bład Task already scheduled or cancelled

edytowany 1x, ostatnio: bogdans, 2016-12-13 18:26

Pozostało 580 znaków

2014-12-29 13:30
Moderator

Rejestracja: 12 lat temu

Ostatnio: 3 miesiące temu

0

O_o, zrób kilka timerów.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0