ScheduledExecutor 서비스로 작업 스케줄링
1636 단어 업무 경험
코드는 다음과 같습니다.
package com.shentong.limitcsv;
import java.util.Calendar;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExecutorTest {
private static final long DAY_TIMES = 5*60*1000;
public static void scheduleAtFixedRate(Runnable runnable, int day, int hour, int min) throws Exception {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
long curLong = System.currentTimeMillis();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(curLong);
calendar.add(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, min);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long delay=calendar.getTimeInMillis() - curLong;
executor.scheduleAtFixedRate(runnable, delay, DAY_TIMES,
TimeUnit.MILLISECONDS);
}
static Logger logger = LoggerFactory.getLogger(ExecutorTest.class);
public static void main(String[] args) {
Exec manage = new Exec();
try {
scheduleAtFixedRate(manage, 0, 17, 0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Exec implements Runnable{
Logger logger = LoggerFactory.getLogger(Exec.class);
static int cnt = 1;
boolean taskstatus = false;
@Override
public void run() {
logger.debug(" "+(cnt++)+" ");
taskstatus = true;
}
public boolean isTaskstatus() {
return taskstatus;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx 를 통 해 데이터 전송 원 주소 가 변경 되 었 습 니 다.제 가 어떤 프로젝트 를 할 때 18 네트워크 의 각종 네트워크 장치 syslog 로 그 를 18 네트워크 의 중계 기 를 통 해 17 네트워크 의 로그 서버 에 보 내야 합 니 다. 그 중계 기 는 nginx 부하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.