Java laikmačio klasė
Java, Laikmatis yra klasė, priklausanti java.util paketą. Jis pratęsia Objektas klasę ir įgyvendina Serializuojama sąsaja. Klasėje pateikiami konstruktoriai ir metodai, kuriuos galima naudoti su laiku susijusioms veikloms atlikti. Naudodami laikmačio klasę galime suplanuoti užduotį, kurią norime atlikti tam tikru laiku.
Atminkite, kad laikmačio klasė yra saugi klasė. Tai reiškia, kad tik gija gali vykdyti laikmačio klasės metodą. Kitas dalykas, į kurį reikia atkreipti dėmesį, kad klasė naudoja dvejetainę krūvos duomenų struktūrą savo užduočiai saugoti.
Laikmatis Java programos
Užduoties, kurią turi atlikti laikmačio gija, planavimas
ScheduleTimer.java
import java.util.Calendar; import java.util.Timer; import java.util.TimerTask; public class ScheduleTimer { public static void main(String args[]) { //instance of the Timer class Timer timer = new Timer(); TimerTask task = new TimerTask() { //represent the time after which the task will begin to execute int i = 5; @Override public void run() { if(i>0) { System.out.println(i); i--; } else { System.out.println('Wish You Very Happy Birthday!!'); //cancel the task once it is completed timer.cancel(); } } }; //creating an instance of the Calendar class Calendar date = Calendar.getInstance(); //setting the date and time on which timer will begin date.set(2022, Calendar.MARCH, 30,23, 59, 54); //enables the counter to count at a rate of 1 second timer.scheduleAtFixedRate(task, date.getTime(), 1000); } }
Išvestis:
homogeniškas mišinys
5 4 3 2 1 Wish You Very Happy Birthday!!
Pažiūrėkime kitą Java programą, kurioje atlikome užduotį po tam tikro laiko tarpo.
TimerDemo.java
import java.util.Timer; import java.util.TimerTask; public class TimerDemo { Timer timer = new Timer(); TimerDemo(int seconds) { //schedule the task timer.schedule(new RemindTask(), seconds*1000); } class RemindTask extends TimerTask { public void run() { System.out.println('You have a notification!'); //terminate the timer thread timer.cancel(); } } //driver code public static void main(String args[]) { //function calling new TimerDemo(10); } }
Išvestis:
You have a notification!
Programa užtrunka 10 sekundžių, kol konsolėje rodomas pranešimas.
Paleiskite ir sustabdykite laikmatį
StartStopTimer.java
import java.util.Timer; import java.util.TimerTask; class Task extends TimerTask { int counter; public Task() { counter = 0; } public void run() { counter++; System.out.println('Ring ' + counter); } public int getCount() { return counter; } } public class StartStopTimer { private boolean running; private Task task; private Timer timer; public StartStopTimer() { timer = new Timer(true); } public boolean isRinging() { return running; } public void startRinging() { running = true; task = new Task(); timer.scheduleAtFixedRate(task, 0, 3000); } public void doIt() { running = false; System.out.println(task.getCount() + ' times'); task.cancel(); } public static void main(String args[]) { StartStopTimer phone = new StartStopTimer(); phone.startRinging(); try { System.out.println('started running...'); Thread.sleep(20000); } catch (InterruptedException e) { } phone.doIt(); } }
Išvestis:
Taip pat galime sukurti atgalinės atskaitos laikmatį naudodami laikmačio klasę.