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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被骗了说给存q币怎么办 方正说我的淘宝字体侵权怎么办 买家说收到衣服没有吊牌该怎么办 淘宝下完订单店主不发货怎么办 工商局不给查被告企业的信息怎么办 被职业打假人起诉到法院怎么办 京东购物如果换货不给你发货怎么办 淘宝上发的快递没有了怎么办 天猫购物半个月不发货怎么办 京东网同一产品购买多规格的怎么办 天猫商城购买的家具要退换货怎么办 亚马逊美国站会员日前没销量怎么办 淘宝买的鞋子把脚磨坏了怎么办 拼多多下单 没货 没法发货怎么办 闲鱼退货物流弄坏了卖家拒收怎么办 客户说物流太慢了 要退货怎么办 京东退货物流系统不更新怎么办 把货交给物流但是物流丢货了怎么办 货还在物流就申请退款怎么办 荣耀4x返回键不管用怎么办 华为手机关不了机也开不了机怎么办 荣耀畅玩5x手机密码忘了怎么办 华为短信验证码失败其他错误怎么办 红米3x手机卡顿反应慢怎么办 华为手机不停的自动重启怎么办 华为荣耀4x卡在开机界面怎么办 华为荣耀8青春版密码忘了怎么办 华为手机内存满了开不起来怎么办 华为荣耀畅玩平板2比较卡怎么办 红米4x太卡了怎么办 魅蓝e移动卡只有2g网络怎么办 联通关闭2g网络双卡手机怎么办 小米6x手机插耳机音量大怎么办 音量键和亮度键盘拆了怎么办 荣耀v10锁屏密码忘了怎么办 荣耀9锁屏密码忘记了怎么办 华为荣耀v9锁屏密码忘记了怎么办 荣耀手机密码忘了怎么办数字锁 华为畅享5忘了开机密码怎么办 华为p9连接热点忘了密码怎么办 苹果手机用联通卡信号不好怎么办