最赞回答 / 不爱吃泡饭
实际执行语句的时间 晚于 设置的timer开始时间:scheduleAtFixedRate会补上应该执行的次数(以连续执行的方式,在实际上第一次执行的时候),schedule错过了的次数不补。如果任务的耗时超过设置的时间间隔:scheduleAtFixedRate会严格按照时间点执行(于是任务并行执行着),而schedule上一个任务什么时候完成什么时候执行下一任误才执行(无视延迟,串行执行)好吧,我知道你没看懂,我写的我也看不懂,举例子:第一个区别: ScheduleAtFixedRate同学旷课两天...
2018-04-09
已采纳回答 / 翔仔
同学好,定时的话肯定会占用一定的内存的,同学感兴趣可以启动一个定时任务,然后查看它的进程状态便知。订餐系统的话一般的做法其实只需要一个线程池去定时轮询支付订单的时间是否超时,超时取消即可,不用单独为每个订单设置一个定时器,只需要每分钟轮询一下即可,quartz即可满足,具体需要同学去调研一下:)
2018-02-21
已采纳回答 / 翔仔
同学您好,说的是单个timer只有一个后台线程去执行任务,是可以new两个timer去分别调用任务实现并发的,但是不建议这么做,因为线程之间需要交互的话,多个timer之间的线程不好协调
2017-05-30
已采纳回答 / 翔仔
同学实在抱歉哈,可能我在录课的时候比较匆忙,忘记交代这个是在MAC下进行编程了,在MAC上用的是kepler 2, 当时这个版本比较新,自带了maven插件,不过现在我看了下貌似这个版本过时了,目前最新的是 eclipse neon;windows上可以用 Eclipse Luna ,这个还可以
2017-05-29
讲师回答 / 翔仔
timer主要是依靠时间点来触发的,分为距离现在多少时间后去触发或者指定个具体的时间到点了触发,java web也不例外,一般都应用在报表里,如统计每个月的销量之类的,都会设定在月末某个非高峰的时候触发统计。不知道有没有理解对同学的意思哈。
2017-05-24
已采纳回答 / 翔仔
不建议这样使用timer哈,多个timer的话因为不在一个线程池子里,虽然理论上可以实现多线程但是线程并发的可控性不强。建议使用ScheduledExecutorService(轻量简单,有一个线程池)或者使用Quartz(较重,但是功能更多)替代,方便对线程做控制以及处理一些可能出现的异常 :)
2017-05-24
已采纳回答 / 翔仔
感谢同学的提问。当时录制3-4的目的是想让大家回顾一下前面所学的函数,为了照顾大多数初学的同学,因此就没有就并发进行深入讲解,timer本身确实只有一个后台线程在处理任务,不过对于这里的案例来讲,因为耗时甚微,可以理解为近似并发了,然而后面的sleep确实是没办法实现并发了,所以sleep了之后,timer唯一的线程就sleep了,因此就没时间去跳舞了 :)
2017-05-20