Timer和ScheduledExecutorService区别
Timer特点:

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask; public class TimerTest extends TimerTask { private String jobName = "" ; public TimerTest(String jobName) {
super();
this.jobName = jobName;
} int count = 0; @Override
public void run() {
System. out.println(jobName + " " + new Date() + " beep " + (++count));
try {
if (jobName .equals("job1" )) {
Thread. sleep(1000);
throw new RuntimeException();
} } catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void main(String[] args) {
Timer timer = new Timer();
long period = 2000;
// 从现在开始 1 秒钟之后,每隔 2秒钟执行一次 job1
timer.schedule( new TimerTest("job1" ), 0, period);
// 每隔 2 秒钟执行一次 job2
timer.schedule( new TimerTest("job2" ), 0, period);
}
}
执行结果
job1 Tue Apr 08 23:37:17 CST 2014 beep 1
Exception in thread "Timer-0" java.lang.RuntimeException
at TimerTest.run( TimerTest.java:20)
at java.util.TimerThread.mainLoop( Timer.java:512)
at java.util.TimerThread.run( Timer.java:462)
.png)
import static java.util.concurrent.TimeUnit.SECONDS;
import java.util.Date;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture; public class TestScheduledThread extends TimerTask { private String jobName = "" ; public TestScheduledThread(String jobName) {
super();
this.jobName = jobName;
} int count = 0; @Override
public void run() {
System. out.println(jobName + " " + new Date() + " beep " + (++count));
try {
if (jobName .equals("job1" )) {
Thread. sleep(1000);
throw new RuntimeException();
} } catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void main(String[] args) {
final ScheduledExecutorService scheduler = Executors
. newScheduledThreadPool(2);
//每隔2秒运行一次
final ScheduledFuture beeperHandle = scheduler.scheduleAtFixedRate(
new TimerTest("job1" ), 0, 2, SECONDS);
//每隔2秒运行一次
final ScheduledFuture beeperHandle2 = scheduler.scheduleAtFixedRate(
new TimerTest("job2" ), 0, 2, SECONDS);
}
}
Timer和ScheduledExecutorService区别的更多相关文章
- 任务调度的方式:Timer、ScheduledExecutorService、spring task、quartz、XXL-JOB、Elastic-Job
任务调度 定时任务调度:基于给定的时间点.给定的时间间隔.给定的执行次数自动执行的任务. Timer 介绍 Timer,简单无门槛,一般也没人用. Timer位于java.util包下,其内部包含且仅 ...
- java定时任务Timer与ScheduledExecutorService<转>
在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面LZ就其原理.实例以及Timer缺陷三个方面来解析java Timer定时器. ...
- Java 多线程之Timer与ScheduledExecutorService
1.Timer管理延时任务的缺陷 a.以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗:然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只 ...
- Timer与ScheduledExecutorService间的抉择
java.util.Timer计时器有管理任务延迟执行("如1000ms后执行任务")以及周期性执行("如每500ms执行一次该任务").但是,Timer存在一 ...
- 【高并发】ScheduledThreadPoolExecutor与Timer的区别和简单示例
JDK 1.5开始提供ScheduledThreadPoolExecutor类,ScheduledThreadPoolExecutor类继承ThreadPoolExecutor类重用线程池实现了任务的 ...
- 实例分析Scheduled Thread Pool Executor与Timer的区别
摘要:JDK 1.5开始提供Scheduled Thread PoolExecutor类,Scheduled Thread Pool Executor类继承Thread Pool Executor类重 ...
- C#中Timer使用及解决重入问题
C#中Timer使用及解决重入问题 ★介绍 首先简单介绍一下timer,这里所说的timer是指的System.Timers.timer,顾名思义,就是可以在指定的间隔是引发事件.官方介绍在这里,摘抄 ...
- java Timer 使用小结
Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务.这种方式可以让程序按照某一个频度执行,但不能指定时间运行.用的较少. 任务的调用通过起的子线程进 ...
- Java Timer及TimerTarsk(摘自网络)
Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务. 这种方式可以让程序按照某一个频度执行,但不能指定时间运行.用的较少.任务的调用通过起的子线程进 ...
随机推荐
- 【字符串哈希】bzoj3098 Hash Killer II
教育我们做Rabin-Karp的时候一定要把模数取大?还是上溢好了. #include<cstdio> #include<cstdlib> using namespace st ...
- [CF773D]Perishable Roads
[CF773D]Perishable Roads 题目大意: 一个\(n(n\le2000)\)个点的完全图\(G\),定义\(d(x)\)为生成树上点\(x\)到根路径上的最小边权.问图\(G\)的 ...
- Exercise01_07
public class Outcome{ public static void main(String[] args){ double x, y; x=4*(1.0-1.0/3+1.0/5-1.0/ ...
- Scala实战高手****第10课:Scala继承彻底实战和Spark源码鉴赏
isInstanceOf 和 asInstanceOf is用于判断 as用于转换,把父类类型转换成子类类型 getClass 具体找出类型
- RxJava 2.x 理解-3
背压:Flowable / Subscriber 在RxJava 1.x 理解 中,没有讲到背压这个概念,是因为学习太落后了,RxJava都出2了,所以直接在2上学. 背压是下游控制上游流速的一种手段 ...
- Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明
Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明 FLOOR——对给定的数字取整数位SQL> select floor(2345.67) from dua ...
- 论文中的state-of-the-art
最近看了几篇计算机顶会和SCI,摘要里经常出现这个词,我以为是什么算法,查阅的知是“当前最高水平”,我记得老师说不能有这种模糊词语,需要表明提高了多少,看来论文都很水,即便是IEEE,SCI.
- lync项目总结
概述 9月份,由于公司人事变动,摆在自己面前也有两条路可选择,一是选择lync,二是选择sharepoint,由于之前,部门老大已经让我看了大概一个月的有关lync方面的资料(文档,代码,项目实施等) ...
- Vue 单页应用:记事本
若文章中存在内容无法加载的情况,请移步作者其他博客. 简书 CSDN 最近在看 Vue 的时候,别人给我安利了一个国外的小案例,通过 Vue 和 Vuex 来实现一个记事本. 仔细剖析下,发现“麻雀虽 ...
- 如何使用 vimdiff 来 git diff
git config --global diff.tool vimdiffgit config --global difftool.prompt falsegit config --global al ...