// TimerEsimerkki.java SJ // esimerkki Timer:n käytöstä import java.util.Timer; import java.util.TimerTask; public class TimerEsimerkki { // tarvitsemme yhden Timer-ajastimen käynnistämään suorituksia Timer ajastin; boolean lopeta = false; public TimerEsimerkki() { ajastin = new Timer(); // yksi käyntiin ajastin.schedule(new merkkiTulostaja('1'), 2*1000, 1*1000); System.out.println("Paina jotain"); try { System.in.read(); } catch (Exception e) {} // toinen käyntiin ajastin.schedule(new merkkiTulostaja('2'), 1000, 700); System.out.println("Paina jotain"); try { System.in.read(); } catch (Exception e) {} // kehotetaan säikeitä lopettamaan lopeta = true; System.out.println("Ja vielä"); try { System.in.read(); } catch (Exception e) {} // lopetetaan ajastin ajastin.cancel(); } public static void main(String args[]) { new TimerEsimerkki(); } // luokka jota käynnistellään Timer:iä käyttäen, // kuten säikeen toteuttava luokka, mutta ajetaan useasti class merkkiTulostaja extends TimerTask { char merkki = '.'; public merkkiTulostaja(char c) { merkki = c; } public void run() { if (lopeta) { this.cancel(); // lopetaan tämän _säikeen_ ajastus System.out.println("Loppuu:|" + merkki + "|"); } else { System.out.print(merkki); System.out.flush(); } } // run() } // class merkkiTulostaja } // class TimerEsimerkki