簡體   English   中英

當我在 java 中運行調度程序時沒有任何反應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM