java基础--30.定时器--实现调度
来源:互联网 发布:后期修图软件 编辑:程序博客网 时间:2024/06/06 12:34
定时器–概念简介
定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行。在Java中,可以通过Timer和TimerTask类来实现定义调度的功能
Timer 类
- public Timer()
构造方法 - public void schedule(TimerTask task, long delay)
安排在指定延迟后执行指定的任务。 - public void schedule(TimerTask task,long delay,long period)
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
TimerTask
- public abstract void run()
- public boolean cancel()
开发中
Quartz是一个完全由java编写的开源调度框架。
示例1:实现定时输出信息到控制台
A:先创建一个类 MyTimerTask 继承 TimerTask 类,在run方法中写入要执行的代码
这里我们为TimerTask指定的任务是:在控制台上打印一行内容
注意:为了在该定时器执行条件完成之后能够取消任务,通过构造函数传入Timer定时器的引用
在执行5次之后完成取消任务的操作(cancel)
class MyTimerTask extends TimerTask { private int sum = 0; private Timer timer; public MyTimerTask(Timer t1) { this.timer = t1; } @Override public void run() { //在第5次之后结束执行timer if(sum==5){ timer.cancel(); }else{ System.out.println("炸电脑!!!! bong ~~~"); sum++; } }}
B 定时任务的演示
- 1.延迟某一时间后的爆炸
schedule(TimerTask task, long delay) 参数:task--要执行的人物对象delay--任务启动后延迟多长时间执行
- 2.延迟某一时间并在固定时间多次爆炸
schedule(TimerTask task, long delay, long period) 参数:task--要执行的人物对象delay--任务启动后延迟多长时间执行period--每间隔多长时间继续执行
演示:
public class TimerDemo { public static void main(String[] args) { // 创建timer对象 Timer t1 = new Timer(); // A.3秒后执行一次 // t1.schedule(new MyTimerTask(), 3000); // B 5秒之后开始执行,之后每隔3秒再重复执行,执行次数总共为5次 t1.schedule(new MyTimerTask(t1), 5000, 2000); }}
示例2:实现定时删除指定文件夹及其所有文件
public class TimerDemo2 { /** * 定时删除指定目录下的所有文件 * @throws ParseException */ public static void main(String[] args) throws ParseException { String date = "2016-12-15 20:37:00"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date d = sdf.parse(date); Timer t = new Timer(); t.schedule(new DeleteFolder(), d); }}/** * 定时删除指定目录以及文件 * @author llj * */class DeleteFolder extends TimerTask{ @Override public void run() { File srcFolder = new File("demo"); deleteFolder(srcFolder); } //递归删除某一目录下的所有文件以及文件夹 public void deleteFolder(File srcFolder) { //以数组形式获取文件目录 File[] fileArray = srcFolder.listFiles(); if(fileArray!=null){ for(File file : fileArray){ //判断是否是一个目录,如果是目录,则递归 if(file.isDirectory()){ deleteFolder(file); }else{ System.out.println("deleting file: "+file.getName()+":"+file.delete()); } } System.out.println("deleting folder: "+srcFolder.getName()+":"+srcFolder.delete()); } }}
0 0
- java基础--30.定时器--实现调度
- Java+spring-quartz实现任务调度和定时器
- quartz定时器任务调度实现
- 任务调度1------Java定时器
- Spring @Scheduled 注解实现定时器调度配置
- Java基础:定时器Timer
- Servlet侦听器结合Java定时器 在Web工程中实现任务计划调度
- Servlet侦听器结合Java定时器 在Web工程中实现任务计划调度(转)
- JAVA中Timer定时器调度方法
- java实现定时器 以及Sring实现定时器
- java中实现定时器
- Java中实现定时器
- Java实现定时器
- java 定时器实现
- java 实现定时器修改
- java定时器实现
- java实现自制定时器
- java定时器的实现
- 恢复只读表空间
- Tomcat 虚拟路径配置
- 51nod 1403 有趣的堆栈
- python+beautifulsoup+smtp爬取学院网站的信息公告+邮件发送
- 值得学习的优秀楷模
- java基础--30.定时器--实现调度
- java基础--31.多线程常见的面试题
- 进程的基础知识点
- 【HIbernate框架学习】:Hibernate复合主键映射
- Android 应用加固?
- 博客开启之路
- 已知有字符串foo=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”。
- android中的color使用总结
- 如百度文库中的word,下载需要下载券,不用下载券,还可以看到全文?