Heim >Java >javaLernprogramm >Detaillierte Erläuterung des Codes zur Implementierung der Timer-Funktion in Java

Detaillierte Erläuterung des Codes zur Implementierung der Timer-Funktion in Java

Y2J
Y2JOriginal
2017-05-17 09:19:391986Durchsuche

In diesem Artikel werden hauptsächlich einige Probleme mit Timern in Java anhand von Beispielen vorgestellt. Freunde in Not können sich auf

Timer-Probleme

beziehen. Timer Es handelt sich um eine grundlegende Grundkomponente. Unabhängig davon, ob es sich um die Programmentwicklung im Userspace oder im Kernelspace handelt, werden Timer häufig als Basiskomponente zur Unterstützung benötigt. Die Implementierung eines Timers muss die folgenden vier grundlegenden Verhaltensweisen aufweisen: Timer hinzufügen, Timer abbrechen, Timerprüfung und Ablaufausführung.

Bitte entwerfen Sie einen Timer und implementieren Sie die folgenden drei Grundverhalten. Der Prototyp der Funktion kann zum Entwerfen der Daten verwendet werden Struktur und Implementierung. , und unterstützen Sie eine große Anzahl von Timern so effizient wie möglich: // Fügen Sie einen Timer hinzu: Führen Sie die Zieloperation nach einem bestimmten Zeitintervall aus


// Eingabe 1: Intervall-Timer-Zeit, Einheit ms


// Eingabe 2: ExpiryAction-Zieloperation


// Rückgabe: Timer-ID


StartTimer (Intervall, ExpiryAction) -> TimerId


// Timer abbrechen


// Eingabe: TimerId


StopTimer(TimerId)


  // Timer-Prüfung


  // Das System ruft diese Funktion alle 10 ms auf


 PerTickBookkeeping()


Kommen wir ohne weitere Umschweife direkt zum Code:


1)Timer.java:



import java.util.ArrayList;
public class Timer {
 private long interval; // 定时器时间,单位 ms
 private String expiryAction; // 目标操作
 private int timerId; // 定时器Id
 private long waitTime; // 定时器等待时间 
 // 构造函数
 public Timer(){
  this.waitTime = 0;
 } 
 // 添加定时器
 public int StartTimer(long interval, String expiryAction, int id){
  this.interval = interval;
  this.expiryAction = expiryAction;
  this.timerId = id;
  return timerId;
 } 
 // 取消定时器
 public void StopTimer(int timerId, ArrayList<Timer> timer){
  timer.remove(timerId);
 }
 // 定时器检查
 public void PerTickBookkeeping(){
  if (this.interval > this.waitTime)
   this.waitTime += 10;
  else{
   System.out.println("定时器"+this.timerId+":"+this.expiryAction);
   this.waitTime = 0;
  }
 }
 public long getInterval() {
  return interval;
 }
 public void setInterval(long interval) {
  this.interval = interval;
 }
 public String getExpiryAction() {
  return expiryAction;
 }
 public void setExpiryAction(String expiryAction) {
  this.expiryAction = expiryAction;
 }
 public int getTimerId() {
  return timerId;
 }
 public void setTimerId(int timerId) {
  this.timerId = timerId;
 }
 public long getWaitTime() {
  return waitTime;
 }
 public void setWaitTime(long waitTime) {
  this.waitTime = waitTime;
 }
}
 2) DoTimer.java:

【Verwandte Empfehlungen】
import java.util.ArrayList;
import java.util.Iterator;
public class DoTimer extends Thread {
 private static ArrayList<Timer> timerList;
 public static void main(String[] args){
  timerList = new ArrayList<Timer>();
  Timer timer1 = new Timer();
  timer1.StartTimer(3000, "我是第一个定时器,等待3秒", 0);
  Timer timer2 = new Timer();
  timer2.StartTimer(4000, "我是第二个定时器,等待4秒", 1);
  timerList.add(timer1);
  timerList.add(timer2);  
  //public void run(){}
  new Thread(){
   @Override
   public void run() {
    while(true){
     Iterator<Timer> it = timerList.iterator();
     while(it.hasNext()){
      it.next().PerTickBookkeeping();
     }
     try {
      sleep(10);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
   }
  }.start();
  timer1.StopTimer(timer1.getTimerId(), timerList);
 }
}

1.

Besondere Empfehlung :Version V0.1 von „php Programmer Toolbox“ herunterladen2

Java kostenloses Video-Tutorial

3 Analyse von Java-Annotationen

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Codes zur Implementierung der Timer-Funktion in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn