-
11111
查看全部 -
任务执行时间超出执行周期间隔
查看全部 -
任务执行时间超出执行周期间隔
查看全部 -
public class ScheduleAtFixedRateTest {
public static void main(String[] args) {
//规定时间格式
final SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//获取当前的具体时间
Calendar calendar = Calendar.getInstance();
System.out.println("Current time is: " + sf.format(calendar.getTime()));
//设置成6秒前的时间,若当前时间为2018-3-17 16:03:30,那么设置之后时间变成2018-3-17 16:03:24
calendar.add(Calendar.SECOND, -6);
Timer timer = new Timer();
//第一次执行时间为6秒前,之后每隔两秒执行一次
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
//打印当前的计划执行时间
System.out.println("Scheduled exec time is: " + sf.format(scheduledExecutionTime()));
System.out.println("task is being executed!");
}
}, calendar.getTime(), 2000);
}
}
查看全部 -
首次计划执行时间早于当前时间
查看全部 -
首次计划执行时间早于当前时间
查看全部 -
scheduleAtFixedRate:下次开始执行的时间以上次run方法开始时间为基准。
查看全部 -
schedule:下次开始执行的时间以上次run方法完成时间为基准。
查看全部 -
scheduleAtFixedRate:同样时间回到过去,但是开始执行多次到达正常时间,然后间隔时间输出。
查看全部 -
schedule:时间回到过去,但是开始执行时以一次到达正常时间,然后间隔时间输出。
查看全部 -
Timer 的缺陷:
1 并发操作时的缺陷,这是因为 Timer 的后台只有一个执行线程导致的。
2 当任务抛出异常时的缺陷。如果 TimeTask 抛出 RuntimeException,Timer 会停止所有任务的执行。
根据缺陷,我们可以得出 Timer 的使用禁区。
1 对时效性要求较高的多任务并发作业,虽然 Timer 支持多任务执行,但那都是串行执行的。
2 对复杂的任务的调度,因为在复杂的任务中可能会出现异常,而Timer 中一旦出现异常,则停止执行。
查看全部 -
Timer定义:有且仅有一个一个后台线程对多个业务线程进行定时定频率的调度。
Timer 组件: Timer 主体类和 TimeTask 实现类。
Timer 中包含一个 Time Task 的队列 和 一个 TimeThread 后台线程。
查看全部 -
1.管理并发任务的缺陷:
每次有且仅有一个线程去执行定时任务,如存在多任务会导致任务时间过长(串行)
2.当任务抛出异常时的缺陷:
当抛出RuntimeException(如果不捕捉异常),会停止所有任务
3.在以下情况禁止使用
对时效性要求较高的多任务并发作业
对复杂的任务的调度
查看全部 -
使用禁区。
查看全部 -
缺陷2.。
查看全部
举报