>Java >java지도 시간 >Java에서 타이머 기능을 구현하는 코드에 대한 자세한 설명

Java에서 타이머 기능을 구현하는 코드에 대한 자세한 설명

Y2J
Y2J원래의
2017-05-17 09:19:392008검색

이 글은 주로 자바에서 타이머에 관한 몇 가지 이슈를 예시로 소개하고 있습니다. 도움이 필요한 친구는

타이머 이슈

를 참고하면 됩니다. 타이머의 기본 구성 요소입니다. 사용자 공간이든 커널 공간에서의 프로그램 개발이든 타이머는 기본 구성 요소로서의 지원이 필요한 경우가 많습니다. 타이머 구현에는 타이머 추가, 타이머 취소, 타이머 확인, 만료 실행 등 네 가지 기본 동작 이 필요합니다.

타이머를 디자인하고 다음 세 가지 기본 동작을 구현하세요. 함수 프로토타입이 제공되었습니다. 모든 프로그래밍 언어를 사용하여 데이터를 디자인할 수 있습니다. , 그리고 최대한 효율적으로 많은 수의 타이머를 지원합니다:

// 타이머 추가: 특정 시간 간격 후에 대상 작업을 수행합니다.

// 입력 1: 간격 타이머 시간, 단위 ms

// 입력 2: ExpiryAction 대상 작업

// 반환: 타이머 ID

StartTimer (Interval, ExpiryAction) -> TimerId

// 타이머 취소

// 입력: TimerId

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

【관련 추천】

1. 특별 추천: "php Programmer Toolbox" V0.1 버전 다운로드

2. Java 무료 동영상 튜토리얼

3. Java 주석 종합 분석

위 내용은 Java에서 타이머 기능을 구현하는 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.