Implementacja TimerTask w programie symulującym lotka

0

Witam,
Patrzylem wiele przykladow ale nie potrafie tego przelać na swój kod.Proszę o pomoc oto tresc mojego problemu:
Robie symulacje lotka. 49 liczb z czego 6 ma sie wylosowac. Kody sa gotowe i wszystko śmiga problem polega z implementacja TimerTask. W zadaniu musze ustawic aby funkcja zmieniajaca numerki kul zmieniala się co 10 ms.Stad tez probuję funkcji schedule (kod z funckji main)

los.timer = new Timer();
los.timer.schedule(new losowanie(los, true), odp*10);

Próbowałem z klasa rozszerzajaca TimerTask ale gdy do funkcji run dolaczam parametry kompilator stawia problemy komunikat: Czas(klasa) is not abstract and does not override abstract method. Jak to obejsc zeby to działało tzn wlozyc parametry do funkcji run a potem ewentualnie te parametry wywolany funckje na ktorej mi zalezy?

Dodam że taki zapis

Timer timer;
timer = new Timer();
timer.schedule(new losowanie(), odp*1000);

Rowniez podaje blad cannot find symbol

dodanie znaczników <code class="java"> - @furious programming

0

Czym jest klasa Czas, czym new losowanie(), a czym obiekt los?

Rozszerzając klasę TimerTask musisz zaimplementować metodę run (@Override). Robisz to albo w klasie która rozszerza TimerTask, albo definiujesz tę klasę jako abstrakcyjną i implementujesz tę metodę przy tworzeniu nowego obiektu danej klasy.

Metoda run() powinna zawierać to, co ma się wykonywać cyklicznie. Skonfiguruj też timer.schedule(twójTask,opóźnienie,interwał).

Przykładowa, podstawowa konfiguracja TimerTask:

Timer timer = new Timer ();
TimerTask intervalTask = new TimerTask () {
    @Override
    public void run () {
        // tu jakieś operacje, które mają się dziać cyklicznie
    }
};

timer.schedule (intervalTask, 0l, 10);

Podobne rozwiązanie ale z wykorzystaniem wątków:

Thread intervalThread = new Thread() {
    @Override
    public void run() {
        while(true) {
            try {
                Thread.sleep(10);
                 // tu jakieś operacje, które mają się dziać cyklicznie
            } catch (InterruptedException ie) {
            }
        }
    }
};
t.start();

Musisz określić też warunek zatrzymania dla tych obiektów, inaczej będą działały w nieskończoność ;)

0

Ok. Ale jak przekazać parametry to funkcji run(). Wlasnie ta funkcja ma mi wywoływać funkcję z parametrami.Ile sie mecze caly czas pokazuje bledy.

`dodanie znacznika ``` - @furious programming

0

Możesz przekazać parametr w konstruktorze.

Timer timer = new MyTimer(...);
timer.schedule(...);
...
class MyTimer extends Timer
{
    private int x;
    public MyTimer(int x)
    {
         this.x = x;
    }
    public void run()
    {
        x++;
    }
}

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