[英]Nothing happens when I run the scheduler in java
我正在创建一个调度程序,它每周一都会提醒。 我编写了这些代码,但是当我使用 Tomcat 服务器运行它时,eclipse 的控制台中没有任何响应。
runWeekly.java
package Listener;
public class runWeekly {
public static void main(String[] args) {
// TODO Auto-generated method stub
new WeeklyReportService();
}
}
WeeklyReportService.java
package Listener;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class WeeklyReportService {
public WeeklyReportService(){
this.startScheduler();
}
private void startScheduler(){
Calendar with = Calendar.getInstance();
Map<Integer, Integer> dayToDelay = new HashMap<Integer, Integer>();
dayToDelay.put(Calendar.FRIDAY, 2);
dayToDelay.put(Calendar.SATURDAY, 1);
dayToDelay.put(Calendar.SUNDAY, 0);
dayToDelay.put(Calendar.MONDAY, 6);
dayToDelay.put(Calendar.TUESDAY, 5);
dayToDelay.put(Calendar.WEDNESDAY, 4);
dayToDelay.put(Calendar.THURSDAY, 3);
int dayOfWeek = with.get(Calendar.DAY_OF_WEEK);
int hour = with.get(Calendar.HOUR_OF_DAY);
int delayInDays = dayToDelay.get(dayOfWeek);
int delayInHours = 0;
if(delayInDays == 6 && hour<12){
delayInHours = 12 - hour;
}else{
delayInHours = delayInDays*24+((24-hour)+12);
}
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(new WeeklyTask(), delayInHours,
179, TimeUnit.HOURS);
}
}
每周任务.java
package Listener;
public class WeeklyTask implements Runnable {
@Override
public void run() {
System.out.println("I'm running every monday at 12 pm");
}
}
它必须写下我每周一中午 12 点在 eclipse 的控制台中运行,但它没有写。 我尝试像 java 应用程序一样运行它,但它也没有用。
您的 initialDelay 太大。
让我们数到星期四中午 12 点:
delayInHours = 3*24+((24-12)+12)=96
所以它将在 96 小时后开始
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.