https://blog.csdn.net/coolwindd/article/details/82804189

1.@Scheduled注解

@Scheduled注解是最简单的方式,只需要启用定时器,在方法上添加注解即可。

在spring配置中加入:

    <!-- 启用注解定时器 -->
<task:annotation-driven /> 在要具体的方法上加入注解@Scheduled @Scheduled(cron = "0 0 * * * ? ")
public void myTask(){
//定时任务......
} 2.quartz quartz使用的是可配置的方式,将所有的定时器都配置再一个xml文件里面。步骤如下: 1.创建一个spring的配置文件:spring-quartz.xml 2.定义工作任务的job 3.定义触发器Trigger并与job绑定 4.定义调度器,并将Trigger注册到scheduler <bean id="myTask" class="cn.coolwind.MyTask"/>
<!-- 1.定义工作任务job -->
<bean id="testJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 定时器的类 -->
<property name="targetObject" ref="myTask"></property>
<!-- 需要定时执行的方法 -->
<property name="targetMethod" value="test"></property>
<property name="concurrent" value="false"></property>
</bean>
<!-- 2.定义触发器Trigger并与Job绑定 -->
<bean id="testJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="testJob"/>
<!-- 根据需要设置定时执行的时间 -->
<property name="cronExpression" value="0 0/5 * * * ?" />
</bean> <!-- 3.定义调度器,并将trigger注册进去 -->
<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="testJobTrigger" />
</list>
</property>
</bean> 最后记得将xml写入web.xml里! <init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml,
classpath:log4j.xml,
classpath:spring-quartz.xml
</param-value>
</init-param> 3.使用Timer 使用Timer的schedule,schedule有3个参数: schedule(TimerTask task, long delay, long period) 第一个为定时任务,根据业务需要重写TimerTask的run方法即可; 第二个为延时启动,单位毫秒; 第三个位多久运行一次,单位毫秒; new Timer().schedule(new TimerTask() {
@Override
public void run() {
try {
//do Something
} catch (Exception e) {
e.printStackTrace();
}
}
},0,5L * 60 * 1000); 4.使用线程控制 使用线程来控制就更灵活一些,可以根据自己的需要判断什么时候运行,什么时候停止,这需要对java的线程有一定的了解。 public class TaskTest {
private static final ExecutorService pool = Executors.newFixedThreadPool(5);// 线程池
public static final TaskTest me = new TaskTest();
public final int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9}; public static void main(String[] args) {
me.start();
} private void start() {
pool.execute(new Runnable() {
@Override
public void run() {
while (true) {
try {
for (int i = 0; i < arr.length; i++) {
if (1 == arr[i]) {
System.out.println("start!");
Thread.sleep(1*1000L);
}
if (6 == arr[i]) {
System.out.println("stop!");
Thread.sleep(5*1000L);
}
System.out.println(arr[i]);
if (9 == arr[i]) {
System.out.println("end!");
Thread.sleep(5*1000L);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
}
}

java的几种定时器的更多相关文章

  1. Java开发笔记(一百零五)几种定时器线程池

    前面介绍了普通线程池的用法,就大多数任务而言,它们对具体的执行时机并无特殊要求,最多是希望早点跑完早点出结果.不过对于需要定时执行的任务来说,它们要求在特定的时间点运行,并且往往不止运行一次,还要周期 ...

  2. jmeter--九种定时器介绍(包括思考时间、集合点)

    知识来源:http://www.cnblogs.com/imyalost/p/6004678.html jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很 ...

  3. 基于 Timer是一种定时器工具

    没有依赖 通过Timer中的schedule方法启动定时任务 一般不采用此方法 /** * ------------------------------------------------------ ...

  4. Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用

    OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...

  5. java servlet 几种页面跳转的方法及传值

    java servlet 几种页面跳转的方法及传值   java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...

  6. Java的四种内部类

    Java的四种内部类包括如下: 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类: 定义在另一个类(外部类)的内部,而且与成员方法和属性平级叫成员内部类,......相当于外部类的非静态方法 ...

  7. Java中四种引用:强、软、弱、虚引用

    这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...

  8. java的五种数据类型解析

    不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自 ...

  9. java的几种对象(PO,VO,DAO,BO,POJO)解释

    java的几种对象(PO,VO,DAO,BO,POJO)解释     一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中 ...

随机推荐

  1. Centos7 安装 clamav

    环境 CentOS: 7.x 下载 下载地址 :http://www.clamav.net/downloads,使用目前最新版本为:clamav-0.101.3 使用 wget 下载 wget htt ...

  2. Sass函数-comparable 判断两个数是否可进行加减、合并

    comparable() 函数主要是用来判断两个数是否可以进行“加,减”以及“合并”.如果可以返回的值为 true,如果不可以返回的值是 false: >> comparable(2px, ...

  3. ltp-ddt wdt_test

    # @name Watchdog Timer getsupport,settimeout,getstatus,keepalive ioctl and write test# @desc Watchdo ...

  4. Java集合框架Map接口

    集合框架Map接口 Map接口: 键值对存储一组对象 key不能重复(唯一),value可以重复 常用具体实现类:HashMap.LinkedHashMap.TreeMap.Hashtable Has ...

  5. Orcad Capture元件库介绍--Cadence Allegro

    绘制原理图和PCB,最好有自己的元件封装.元件库 ORCAD CAPTURE元件库介绍 AMPLIFIER.OLB amplifier 共182个零件,存放模拟放大器IC,如CA3280,TL027C ...

  6. [LightOJ1070]Algebraic Problem

    题目:Algebraic Problem 链接:https://vjudge.net/problem/LightOJ-1070 分析: 1)$ a^n+b^n = ( a^{n-1}+b^{n-1} ...

  7. centos7下zookeeper安装配置

    1.下载zookeeper文件 cd /opt/ wget http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.9.tar ...

  8. 关于vsftp出现Restarting vsftpd (via systemctl): Job for vsftpd.service failed because the control 的解决办法

    转载于:http://blog.csdn.net/it_dream_er/article/details/50783111 刚刚在搭建ftp服务器时,在配置好一切的参数之后,在我重启时,出现了无法启动 ...

  9. ! Failed at the chromedriver@2.35.0 install script.

    npm install 过程中报错 解决方法 运行 npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/d ...

  10. python字符串常用函数-大小写,删除空格,字符串切片