91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

深入淺析Java中的定時器

發布時間:2020-11-17 15:57:32 來源:億速云 閱讀:222 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關深入淺析Java中的定時器,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

定時器問題

  定時器屬于基本的基礎組件,不管是用戶空間的程序開發,還是內核空間的程序開發,很多時候都需要有定時器作為基礎組件的支持。一個定時器的實現需要具備以下四種基本行為:添加定時器、取消定時器、定時器檢查、到期執行。

  請設計一個定時器并實現以下三種基本行為,函數原型已給出,可使用任意編程語言設計數據結構及實現,并盡可能高效地支持大量定時器:  

       // 添加定時器:經過特定時間間隔后執行目標操作

  // 輸入 1:Interval 定時器時間,單位ms

  // 輸入 2:ExpiryAction 目標操作

  // 返回:定時器 Id

  StartTimer(Interval, ExpiryAction) -> TimerId

  // 取消定時器

  // 輸入:定時器 Id

  StopTimer(TimerId)

  // 定時器檢查

  // 系統每隔 10ms 會調用一次該函數

  PerTickBookkeeping()

  話不多說,直接上代碼:

  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:

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);
 }
}

看完上述內容,你們對深入淺析Java中的定時器有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合阳县| 淮安市| 和静县| 乐平市| 新建县| 花莲县| 十堰市| 元谋县| 新源县| 游戏| 康平县| 新竹县| 尤溪县| 连南| 江源县| 乃东县| 乡宁县| 虞城县| 松桃| 隆安县| 明水县| 台山市| 榆林市| 大埔区| 汉沽区| 金湖县| 扬中市| 灌云县| 云和县| 肇源县| 杭锦后旗| 竹山县| 宁海县| 株洲县| 恩平市| 分宜县| 普兰店市| 化德县| 丹寨县| 黎川县| 和静县|