java 定时任务

1. 需要导入的包
   quartz-2.2.1.jar
   quartz-jobs-2.2.1.jar
   slf4j-api-1.6.6.jar
   slf4j-log4j12-1.6.6.jar
   log4j-1.2.8.jar
  
2. 写两个类(一定要写两个,没有public,它是访问不了的)
   public class TestJob implements Job {
	private Logger log = Logger.getLogger(TestJob.class);
	
	public void execute(JobExecutionContext jExeCtx)
			throws JobExecutionException {
		System.out.println("Job executed..."); 
	}
}

public class JobTest {

	public static void main(String[] args) throws SchedulerException {
		// specify the job' s details..
		JobDetail job = JobBuilder.newJob(TestJob.class)
				.withIdentity("testJob").build();
		// specify the running period of the job
		  Trigger trigger = TriggerBuilder  
	                .newTrigger()  
	                .withIdentity("testTrigger1", "group1")  
	                .withSchedule(CronScheduleBuilder.cronSchedule("0/4 * * * * ?"))  
	                .build();  
		// schedule the job
		SchedulerFactory schFactory = new StdSchedulerFactory();
		Scheduler sch = schFactory.getScheduler();
		sch.start();
		sch.scheduleJob(job, trigger);
	}
}


到了这一步,你还是运行不起来的,还需要加一个文件在里面,注意这个文件只能放在classpath目录下,即是src目录下。
log4j.properties

log4j.rootLogger=debug,sysout

# sysout log configuration
log4j.appender.sysout=org.apache.log4j.ConsoleAppender
log4j.appender.sysout.Target=System.out
log4j.appender.sysout.Threshold=debug
log4j.appender.sysout.layout=org.apache.log4j.PatternLayout
log4j.appender.sysout.layout.ConversionPattern=%d{dd.MM.yyyy HH:mm:ss} %5p (%F:%L) - %m%n

到这里,你就可以运行这个文件了。

如果在job中有sleep,它还是会按间隔的时间来运行的,这一点请注意。

注意一些符号的用途:
星号:表示任意时刻
问号:只能在日或周字段上使用
减号:范围,如 1-5秒
逗号:列表,如 1,5,10 秒
斜杠:等步长序列,如3/13秒 表示 3,16,29,42,55,3,16...


0 0 12 * * ?            每天12点触发
0 15 10 ? * *           每天10点15分触发
0 15 10 * * ?           每天10点15分触发
0 15 10 * * ? *         每天10点15分触发
0 15 10 * * ? 2005      2005年每天10点15分触发
0 * 14 * * ?            每天下午的 2点到2点59分每分触发
0 0/5 14 * * ?          每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ?       每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ?          每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED      3月分每周三下午的 2点10分和2点44分触发
0 15 10 ? * MON-FRI     从周一到周五每天上午的10点15分触发
0 15 10 15 * ?          每月15号上午10点15分触发
0 15 10 L * ?           每月最后一天的10点15分触发
0 15 10 ? * 6L          每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L 2002-2005    从2002年到2005年每月最后一周的星期五的10点15分触发
0 15 10 ? * 6#3         每月的第三周的星期五开始触发
0 0 12 1/5 * ?          每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ?         每年的11月11号 11点11分触发(光棍节)

  

你可能感兴趣的:(java,quartz,定时器,定时任务)