多线程之任务调度
2018-03-25 11:28
232 查看
Timer定时器类
TimerTask任务类
通过java timer timetask:(Spring的任务的任务调度就是通过他们实现的)
在这种实现方式中,Timer类实现的是类似于闹钟的功能,也就是定时或者每隔一定时间触发一次线程。其实,Timer类本身实现的就是一个线程,只是这个线程是用来实现调用其它线程的。而TimerTask类是一个抽象类,该抽象类继承自Object并实现了Runnable接口,所以该类也就具备了多线程的能力
public abstract class TimerTaskextends Objectimplements Runnable
如上图所示,该类只有三个方法,其中唯一的抽象方法是run方法,因此在new TimerTask类的时候需要通过内部类实现run方法,将线程想实现的东西写在run方法中,然后在Timer类中通过相关方法启动线程的执行
如下例子:
/**
* Timer类的schedule方法实现任务调度
* schedule(TimerTask task, Date firstTime, long period)
安排指定的任务在指定的时间开始进行重复的固定延迟执行
* @author Kermit
*
*/
public class TestTimer {
public static void main(String[] args) {
Timer time = new Timer();
time.schedule(new TimerTask(){//通过Timer类的schedule调用线程
@Override
public void run() {//在newTimerTask的时候通过内部类实现run方法
System.out.println("so easy!!");
}
}, new Date(System.currentTimeMillis() + 1000), 200);//当前时间1秒后输出执行run方法,以后每隔0.2秒执行一次
}
}
输出:
so easy!!
so easy!!
so easy!!
so easy!!
在实际使用时,一个Timer可以启动任意多个TimerTask实现的线程,但是多个线程之间会存在阻塞。所以如果多个线程之间如果需要完全独立运行的话,最好还是一个Timer启动一个TimerTask实现。
TimerTask任务类
通过java timer timetask:(Spring的任务的任务调度就是通过他们实现的)
在这种实现方式中,Timer类实现的是类似于闹钟的功能,也就是定时或者每隔一定时间触发一次线程。其实,Timer类本身实现的就是一个线程,只是这个线程是用来实现调用其它线程的。而TimerTask类是一个抽象类,该抽象类继承自Object并实现了Runnable接口,所以该类也就具备了多线程的能力
public abstract class TimerTaskextends Objectimplements Runnable
如上图所示,该类只有三个方法,其中唯一的抽象方法是run方法,因此在new TimerTask类的时候需要通过内部类实现run方法,将线程想实现的东西写在run方法中,然后在Timer类中通过相关方法启动线程的执行
如下例子:
/**
* Timer类的schedule方法实现任务调度
* schedule(TimerTask task, Date firstTime, long period)
安排指定的任务在指定的时间开始进行重复的固定延迟执行
* @author Kermit
*
*/
public class TestTimer {
public static void main(String[] args) {
Timer time = new Timer();
time.schedule(new TimerTask(){//通过Timer类的schedule调用线程
@Override
public void run() {//在newTimerTask的时候通过内部类实现run方法
System.out.println("so easy!!");
}
}, new Date(System.currentTimeMillis() + 1000), 200);//当前时间1秒后输出执行run方法,以后每隔0.2秒执行一次
}
}
输出:
so easy!!
so easy!!
so easy!!
so easy!!
在实际使用时,一个Timer可以启动任意多个TimerTask实现的线程,但是多个线程之间会存在阻塞。所以如果多个线程之间如果需要完全独立运行的话,最好还是一个Timer启动一个TimerTask实现。
相关文章推荐
- java多线程并发executorservice(任务调度)类
- Android使用信号量Semaphore进行多线程任务调度
- quartz在job间隔期间内,保证上一个任务执行完后,再去调度下一个任务(转),在多线程情况下的问题
- 多线程异步调度任务
- 任务调度(四)——ScheduledExecutorService替代Timer,实现多线程任务调度
- 多线程应用:用TimerTask于Timer任意时间调度任务
- Spring-boot使用Quartz实现多线程调度任务
- 多线程任务下CPU和GPU调度速度
- Android使用信号量Semaphore进行多线程任务调度
- Java多线程复习与巩固(七)--任务调度线程池ScheduledThreadPoolExecutor
- Spring 多线程bean的问题(Spring+Javaweb中任务调度)
- 任务调度(四)——ScheduledExecutorService替代Timer,实现多线程任务调度
- android集成 任务调度 cron4j
- C#当中的多线程_任务并行库(下)
- hadoop的任务调度机制
- μC/OS Ⅱ学习笔记--任务的调度
- JavaEE开发之Spring中的多线程编程以及任务定时器详解
- 关于MVC WebAPI 中加入任务调度功能的问题 (MVC WebAPI 任务调度)
- asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例
- windows 服务实现定时任务调度(Quartz.Net)