我正在尝试安排一个工作在每周四晚上 7 点之后随时运行。但到目前为止,使用下面的代码,我可以让它在星期四运行,但不能在晚上 7 点之后随时运行。
我正在使用ScheduledExecutorsService
这个。有什么办法可以让它在星期四晚上 7 点之后运行吗?
private static final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2);
final ArrayList<Callable<Void>> tasks = Lists.newArrayList(new TestBImpl(), new TestAImpl());
Calendar with = Calendar.getInstance();
Map<Integer, Integer> dayToDelay = new HashMap<Integer, Integer>();
dayToDelay.put(Calendar.FRIDAY, 0);
dayToDelay.put(Calendar.SATURDAY, 6);
dayToDelay.put(Calendar.SUNDAY, 5);
dayToDelay.put(Calendar.MONDAY, 4);
dayToDelay.put(Calendar.TUESDAY, 3);
dayToDelay.put(Calendar.WEDNESDAY, 2);
dayToDelay.put(Calendar.THURSDAY, 1);
int dayOfWeek = with.get(Calendar.DAY_OF_WEEK);
int delayInDays = dayToDelay.get(dayOfWeek);
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
try {
executorService.invokeAll(tasks);
} catch (Exception ex) {
ex.printStackTrace(); // or loggger would be better
}
}
}, 0, delayInDays, TimeUnit.DAYS);
任何建议都会有很大帮助。我需要使用多线程方式来执行我的任务。在我的tasks
中,我将有两个以上的类,因为现在我只有两个类,我正在并行执行它。