【百占百胜】-三创比赛,学习定时器的心路历程and基于spring-task实现定时任务简单介绍

大家好,我是被白菜拱的猪。

一个热爱学习,痴迷于girl的潇洒从容淡然coding handsome boy!

为了解决座位每晚12点释放座位的功能,以及每隔一段时间刷表查看签到和签退的功能,潇洒而又不风流的我于是乎研究起了定时器,这不看不知道,一看吓一跳,不知不觉一上午的时间就这么过去了,我不禁感叹,time 真是 goes quickly。由浅入深,循序渐进。

在我了解的过程中发现java实现定时任务有四种,首先是jdk自带的两个Timer,ScheduledThreadPoolExecutor,后者是jdk1.5提出的,因为这个Timer毛病着实有点多,像什么单线程,出问题了其他任务也执行不了,所有帅的人已经不再使用了,其他帅的人我是不知道他们还在用不用,反正我是果断抛弃。

正当我要使用ScheduledThreadPoolExecutor写完测试代码时,一不小心又发现了新大陆,因为ScheduledThreadPoolExecutor使用的是相对时间,因为timer的绝对时间会随着系统时间的改变而改变,这会造成我修改电脑的时间,程序就会根据电脑的时间而运行,比如我想着把时间改成12点,那么座位就会被修改。这不禁想起初三那年,给我们班同学在电脑上刷票的情景,电脑课把时间改成了啥啥啥,结果一节课刷了五百多票,现在是觉得写那个代码的人是真low!low的不行!瞧不起他!当然我们班同学的那个口号第一名,每个星期一升国旗之后还要喊“江南学子,自信阳光什么什么什么什么”,嗐,口号也挺low。
好言归正传ScheduledThreadPoolExecutor改善了这一缺点,使用了相对时间。
但是我发现的新大陆不是他,而是spring quartz,哎呀我去,这不可以和spring框架整合吗,读着读着,喜欢偷懒得我又了解了spring task 这是spring自己带的,代码简直少的可怜。犹豫再三,还是选择了最后一个,毕竟咱要多接触接触新鲜事物是不是(哈哈哈我是真的不想敲啊)

好下面我们简单的介绍一下spring-task

这是网上写的不错的关于定时器实现的几种方式的文章

博客上有好多雷同的,咱也不赋值粘贴了,毕竟用屁股想想我也写不出这样的文章

ok,no 代码 you say 个 jb!

1、在spring-servlet.xml 添加task命名空间及描述


主要是添加

xmlns:task="http://www.springframework.org/schema/task"   

 http://www.springframework.org/schema/task 
      	 http://www.springframework.org/schema/task/spring-task.xsd">

这里不用引入别的包,他是基于spring的包就ok

2、创建pojo类,即你要实现的业务任务的部分

他这很简单,不需要继承这继承那的,这里我没有使用注解的方式,因为总共也就需要三个定时任务,座位修改,签到,签退(主要是我懒,看着使用注解,配置怪麻烦的哈哈)

@Service
public class SpringTaskTest {
	
	public void task(){
		System.out.println("--------定时任务开始了-------");
	}

}

这里注意@service还是要加的,让spring帮我们管理这个类。

3、spring-servlet.xml 配置

	 
	    
           
	  
	

look,look so easy!注意ref是指我们的类名,但是要首字母要小写,method是我们要执行的方法,cron代表你多长时间执行一次。*/1 * * * * ? 是每隔一秒执行一次。
这里是对cron的详细介绍

对了还不要忘记,还要配置扫描器,扫描注解。

最后启动tomcat,定时任务就开始了
4、运行结果
【百占百胜】-三创比赛,学习定时器的心路历程and基于spring-task实现定时任务简单介绍_第1张图片

学习是一个过程,一步一步,其实东西本不难,我们只是缺乏一颗渴望知识的心。live old,study old。
你看它难吗,就听起来好复杂的样子,它也就在名字上装装逼。

祝我and你学习愉快 来自一个热爱学习,痴迷于girl的潇洒从容淡然coding handsome boy!

你可能感兴趣的:(Java网站开发,java,spring)