ScheduledExecutorService任务定时代码示例
本文主要分享了一则关于ScheduledExecutorService任务定时的实例代码,具体如下:
示例代码
packagecom.effective.common.concurrent.execute; importjava.text.DateFormat; importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Date; importjava.util.concurrent.Executors; importjava.util.concurrent.ScheduledExecutorService; importjava.util.concurrent.TimeUnit; publicclassSchedule{ privatestaticDateFormatdateFormat=newSimpleDateFormat("yy-MM-ddHH:mm:ss"); privatestaticDateFormatdayFormat=newSimpleDateFormat("yy-MM-dd"); privatestaticScheduledExecutorServiceexcutor=Executors.newSingleThreadScheduledExecutor(); /** *按指定频率周期执行某个任务
*初始化延迟0ms开始执行,每隔5ms重新执行一次任务。 */ publicvoidfixedRate(){ excutor.scheduleAtFixedRate(newEchoServer(),//执行线程 0,//初始化延迟 5000,//两次开始的执行的最小时间间隔 TimeUnit.MILLISECONDS//计时单位 ); } /** * */ publicvoidfixDelay(){ excutor.scheduleWithFixedDelay(newEchoServer(),//执行线程 0,//初始化延迟 5000,//前一次执行结束到下一次执行开始的间隔时间 TimeUnit.MILLISECONDS); } /** *每天晚上8点执行一次 */ publicvoiddayOfDelay(Stringtime){ ScheduledExecutorServiceexecutor=Executors.newScheduledThreadPool(1); longoneDay=24*60*60*1000; longinitDelay=getTimeMillis("20:00:00")-System.currentTimeMillis(); initDelay=initDelay>0?initDelay:oneDay+initDelay; executor.scheduleAtFixedRate( newEchoServer(), initDelay, oneDay, TimeUnit.MILLISECONDS); } /** *获取给定时间对应的毫秒数 *@paramstring"HH:mm:ss" *@return */ privatestaticlonggetTimeMillis(Stringtime){ try{ DatecurrentDate=dateFormat.parse(dayFormat.format(newDate())+""+time); returncurrentDate.getTime(); } catch(ParseExceptione){ e.printStackTrace(); } return0; } publicstaticvoidmain(String[]args){ Scheduleschedule=newSchedule(); schedule.fixedRate(); schedule.fixDelay(); } }
总结
以上就是本文关于ScheduledExecutorService任务定时代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!