线程 —— 定时器介绍

TimerTask 是一个抽象类,实现 TimerTask 的 run 方法。

示例 1:

/**
 * Created by liwei on 16/7/19.
 */
/*
 * 定时器:可以让我们在指定的时间做某件事情,还可以重复的做某件事情。
 * 依赖Timer和TimerTask这两个类:
 * Timer:定时
 *      public Timer()
 *      public void schedule(TimerTask task,long delay)
 *      public void schedule(TimerTask task,long delay,long period)
 *      public void cancel()
 * TimerTask:任务
 */
public class TimeDemo {

    public static void main(String[] args) {
        // 创建定时器对象
        Timer timer = new Timer();

        // 3 秒以后执行任务
        timer.schedule(new MyTask(timer),3*1000);
    }

}

// 做一个任务
class MyTask extends TimerTask{
    // 为了控制定时器结束,将 Timer 作为成员变量
    private Timer timer;

    public MyTask(){}

    public MyTask(Timer timer){
        this.timer = timer;
    }

    @Override
    public void run() {
        System.out.println("beng,爆炸了");
        // 结束任务
        timer.cancel();
    }
}

示例2:

public class TimeDemo2 {
    public static void main(String[] args) {
        Timer timer =new Timer();
        // 5 秒以后执行任务,每隔 2 秒(周期)再执行一次
        timer.schedule(new MyTask2(),5*1000,2*1000);
    }
}

// 做一个任务
class MyTask2 extends TimerTask{

    @Override
    public void run() {
        System.out.println("任务正在执行 --- ");
    }
}

示例3:
递归地删除目录

/**
 * Created by liwei on 16/7/19.
 *
 * 递归删除目录:在指定的时间内删除我们指定的目录
 */
class DeleteFolder extends TimerTask{

    @Override
    public void run() {
        File srcFolder = new File("demo");
        deleteFolder(srcFolder);
    }
    // 递归删除目录
    private void deleteFolder(File srcFolder) {
        File[] fileList = srcFolder.listFiles();
        if(fileList!=null){
            for(File file:fileList){
                if(file.isDirectory()){
                    deleteFolder(file);
                }else {
                    Boolean ifDelete = file.delete();
                    String fileName = file.getName();
                    System.out.println("文件 " + fileName + "是否删除成功:" + ifDelete);
                }
            }
            System.out.println(srcFolder.getName() + "删除根文件夹是否成功:" + srcFolder.delete());
        }
    }
}

public class TimerTest {

    public static void main(String[] args) throws ParseException{
        Timer timer = new Timer();
        String s = "2016-07-19 00:00:00";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(s);
        // 在指定的时间递归地删除一个文件夹
        timer.schedule(new DeleteFolder(),date);
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值