Strona Główna | Kurs Javy | Galeria Apletów | Algorytmy | CodeGenerator | Państwa, miasta(gra) | Forum

INNE DZIAŁY
Co to jest java?

KURS
Dla początkujących

Timer

Działanie Timeru jest z pewnością znane użytkownikom środowisk programistycznych firmy Borland (np. C++Builder, Delphi) i platformy .NET Framework (np. Visual Studio .NET).
Ogólnie mówiąc Timer jest osobnym wątkiem, uruchamianym o określonym czasie, i ew. powtarzanym w równych odstępach czasu.

Klasie Timer towarzyszy zawsze klasa TimerTask.
TimerTask implementuje interfejs Runnable(patrz: Wielowątkowość), zawiera więc abstrakcyjną metodę run(), którą trzeba przykryć.
Od tej metody rozpoczyna się wykonywanie wątku.
Kolejną metodą klasy TimerTask jest metoda cancel(), która przerywa wątek i zwraca wartość true jeśli się to udało.

Klasa Timer ma kilka konstruktorów:
  • Timer()
    Domyślny konstruktor tworzący obiekt, który będzie wykonywany jak zwykły wątek.

  • Timer(boolean tThread)
    Jeśli argument tThread ma wartość true, wykorzystany zostanie dodatkowy wątek demona.

  • Timer(String tName)
    Konstruktor dodany dopiero w wersji J2SE 5, umożliwia określenie nazwy wątku.

  • Timer(String tName, boolean tThread)
    Konstruktor dodany dopiero w wersji J2SE 5, umożliwia określenie nazwy wątku i jeśli argument tThread ma wartość true, wykorzystany zostanie dodatkowy wątek demona.

Do planowania zadania służą metody schedule i scheduleAtFixedRate:
  • schedule(TimerTask TT, long wait)
    Argument TT jest naszym zadaniem, a argument wait to czas uruchomienia zadania liczony w milisekundach od uruchomienia programu.

  • schedule(TimerTask TT, long wait, long repeat)
    Argument TT jest naszym zadaniem, argument wait to czas uruchomienia zadania liczony w milisekundach od uruchomienia programu, a argument repeat to czas w którym będzie powtarzany wątek liczony w milisekundach.

  • schedule(TimerTask TT, Date data)
    Argument TT jest naszym zadaniem, a argument data jest obiektem klasy Date, służącym do wyznaczenia dokładnego czasu uruchomienia zadania.

  • schedule(TimerTask TT, Date data, long repeat)
    Argument TT jest naszym zadaniem, argument data jest obiektem klasy Date, służącym do wyznaczenia dokładnego czasu uruchomienia zadania, a argument repeat to czas w którym będzie powtarzany wątek liczony w milisekundach.

  • scheduleAtFixedRate(TimerTask TT, long wait, long repeat)
    Argument TT jest naszym zadaniem, argument wait to czas uruchomienia zadania liczony w milisekundach od uruchomienia programu, a argument repeat to czas w którym będzie powtarzany wątek liczony w milisekundach, z tym że odstępy wykonywania wątku są uruchamianie względem pierwszego jego uruchomienia.

  • scheduleAtFixedRate(TimerTask TT, Date data, long repeat)
    Argument TT jest naszym zadaniem, argument data jest obiektem klasy Date, służącym do wyznaczenia dokładnego czasu uruchomienia zadania, a argument repeat to czas w którym będzie powtarzany wątek liczony w milisekundach, z tym że odstępy wykonywania wątku są uruchamianie względem pierwszego jego uruchomienia.

Teraz pora zastosować klasę Timer w praktyce.
Napiszemy aplet który po upływie jednej minuty zacznie migać:

import java.applet.*;
import java.awt.*;
import java.util.*;

public class TIMER extends Applet
{

    static public Applet naszAplet;

    public void init( )
    {
      Timer timer = new Timer( );
      Zadanie zadanie = new Zadanie( );

      timer.schedule(zadanie, 60000, 500);

      naszAplet = this;
    }
}

class Zadanie extends TimerTask
{

    static boolean czerwony = true;
    public void run( )
    {
      if(czerwony == true)
      {
        TIMER.naszAplet.setBackground(Color.red);
        czerwony=false;
      }
      else
      {
        TIMER.naszAplet.setBackground(Color.yellow);
        czerwony=true;
      }
    }
}

>Kliknij tutaj by skomentować, zgłosić błąd, lub uzupełnić tą część kursu.<
Kod wygenerowany za pomocą programu: Code Generator




statystyki www stat.pl
Wszystkie prawa zastrzeżone. Created by MarioX