자바 타이머 문제 인 스 턴 스 분석
타 이 머 는 기본 적 인 기본 구성 요소 에 속 합 니 다. 사용자 공간의 프로그램 개발 이 든 커 널 공간의 프로그램 개발 이 든 타 이 머 를 기본 구성 요소 로 지원 해 야 할 때 가 많 습 니 다.타이머 의 실현 은 다음 과 같은 네 가지 기본 적 인 행 위 를 가 져 야 한다. 타이머 추가, 타이머 취소, 타이머 검사, 만 료 실행.
타 이 머 를 설계 하고 다음 과 같은 세 가지 기본 행 위 를 실현 하 십시오. 함수 원형 이 제시 되 었 고 임의의 프로 그래 밍 언어 로 데이터 구 조 를 설계 하고 실현 할 수 있 으 며 가능 한 한 대량의 타 이 머 를 효율적으로 지원 할 수 있 습 니 다.
// 타이머 추가: 특정 시간 간격 을 거 쳐 목표 작업 을 수행 합 니 다.
/ / 입력 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.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 timerList;
public static void main(String[] args){
timerList = new ArrayList();
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 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);
}
}
이 글 이 당신 에 게 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.