spring定时器的两种实现方式:Timer和Quartz

定时器的作用就是让程序在某个特定的时间被触发,自动执行一段代码。最近工作中做会议管理用到了定时器,当会议的结束时间已经过了,那么让会议的状态自动变为已结束,我用spring的两种定时器方式来实现,Java的Timer类和OpenSymphony的Quartz。

一、Timer类定时器实现

1.新建一个类,继承java.util.TimerTask的TimerTask,实现它的run方法,在run方法中做一些相关操作

public class MyTimeTask extends TimerTask {
  @Override
  public void run() {
    //在这里写你的操作
    System.out.print("Coming in the method.......");
  }
}

2.在spring的配置文件中,配置spring的定时器,其中timerTask属性告诉ScheduledTimerTask运行哪个定时器,period属性指每隔多长时间执行一次,这里3600000指一小时,delay属性指在服务器启动后,延迟多长时间开始执行。

<bean id="myTimeTask" class="com.iacheron.MeetingTimeTask"></bean>
	
<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
	<property name="timerTask" ref="myTimeTask" />	
	<property name="period">
	    <value>3600000</value>
	</property>
	<property name="delay" >
	    <value>10000</value>
	</property>
</bean>

3.启动定时器,在spring配置文件中加TimerFactoryBean,负责启动

<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
  <property name="scheduledTimerTasks"> 
    <list>
      <ref bean="scheduleReportTask"/>
    </list> 
  </property> 
</bean>

 

二、Quartz定时器实现

用quartz来实现定时器有两种方式,一种是在配置文件中设置任务类,一种是任务类继承QuartzJobBean(和前一种基本上差不多,这里不提),前一种方式因为类还是普通类,所以更加灵活。

1.新建一个类,在类中建一个方法,方法名自定义

public class MeetingJob {
     public void execute(){
          System.out.println("do something");
     }
}
     
 2.在spring配置文件中定义目标bean和要执行的方法,targetObject引入目标bean,targetMethod的value属性为在第一步中类中的方法名
<bean id="meetingJob" class="com.iacheron.MeetingJob"/> 
<bean id="meetingJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
     <property name="targetObject"> 
         <ref bean="meetingJob"/> <!--目标bean的id-->
     </property> 
     <property name="targetMethod"> 
         <value>execute</value> <!-- 要执行的方法名称 -->
     </property> 
</bean>

3.配置一个触发器,这里要用cronExpression表达式来设置时间

<bean id="cronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">   
  <property name="jobDetail" ref="meetingJobMethod" />  
  <property name="cronExpression" value="0/5 * * * * ?"></property> 5秒发送一次 
</bean>

4.配置一个调度工厂

<bean id="springJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
   <property name="triggers">  
       <list><ref bean="cronTriggerBean"/></list>  
   </property>  
</bean>

 

为了快感而阅读

阅读,就是读者对自己这块丑石的雕刻。而思想,就是主动愿意屈服于来自阅读的雕刻改造。

对于我来说,一本书或一篇文章,怎样才算具有文学性。看它能不能冲击和颠覆现存的那些话语秩序,轰炸出一股新的能量,从而激发我身上一部分的文学能力。我读完了,是否让我恐惧,让我震惊,让我有一种极度的快感或痛楚感。每读一次,便是一次脱胎换骨,一次自我杀戮,一次烈火中的重生。

为了快感而阅读。这里的快感,是指阅读时能让你感觉到一种阅读速度。真正有效的阅读时,当一个个具体的文字经过眼睛,进入大脑的过程,生理和精神上都会得到巨大的快感,内心的空虚,被源源不断导入的快感所填充。这种快感不一定指的是兴奋的状态,也可以是一种痛苦的感觉。不需要情节,仅仅依靠文字,就能给你扑面而来的视觉冲击。我读鲁迅时,就可以真真切切地感受到,每一篇文章,每一个句子,文采之斐然,色彩之鲜艳,意志之决绝,在我大脑的平地上,一阵狂轰乱炸,在多年之后的今天,依然硝烟滚滚。

在阅读的过程中,因为这种彪悍的文字的刺激,你真正从阅变成了读,你的嘴巴会不由自主地跟着读起来,每每读到口干舌燥,喝几口水,一身爽快,稍作休息,然后接着读。时间、空间都不见了,只有你和你的读。在每一个孤独安静的夜里,就这样把自己埋藏进文本世界中,醉生梦死。

当我读书时,我真正读的是什么?苏格拉底说,所有知识的本质就一句话:认识你自己。读书,就是读自己。阅读时,每个读者其实都是自己的读者,你不是在读书,而是读你自己。在《追忆逝水年华》中普鲁斯特写道,作品,只不过是作家交给读者的一种光学仪器,读者可以借此看到他本来无法看清的内心世界。从这种角度来说,快感就是通过文本,对自己的自我解构,或者是自我屠杀。让海洛因般的文字,注入你的大脑中,吸毒般的快感,疯狂的快感,变态的快感。每一次的重读,就是对震惊的震惊,对快感的快感。读,总是一种失败,离开文本时,那里肯定一团糟。而重新回到那里去,又有了新意,又有了新的快感。这第二次的不同的快感,不是从文本里抽出来的,而是读者他自己生产出来的!

这读的过程中,快感当然伴随着极大的精神痛苦,而这痛苦又由于世俗的烦恼,理想的遥不可及而被无限放大,思想在这种充满快感的痛苦中变得凌厉,像西门吹雪的剑,悄无声息地吻上了你的脖子。认识的进步,见识的提高,都是鼓起勇气杀戮自己的过程。在沼泽泥泞中艰难的爬行,在黑暗中的摸索,将锋利的刀一次次扎在自己身上,在痛苦中经历了无数次的大换血,思想才逐渐显现。在曙光初现之前,你如何熬过。尼采说,你什么都可以获得,除了精神正常。

快感是唯一值得去研究的对象。

当初是如何开始的

个人网站上线了,还有很多功能没有完善,迫不及待地放上来先。从 域名购买 到 主机购买 到 域名解析 到 网站上线,整个过程都比较顺利。第一篇,介绍一下这个网站的大致情况好了。

域名:

一直以来,用的网名都是Acheron,在希腊的神话里,Acheron是一条河流,意为悲伤之河。在但丁的《神曲》里指的是地狱的边界。对我来说,这个名字本身没有特别意义,使用纯粹只是因为一次偶然。时间久了,习惯了这个名字,取域名的时候,第一想到的就是acheron.com,查询了下,这名字已被人注册了,.cn的可以,只是对我这种极端崇洋媚外的人来说,能不用就不用了。所以我就在这个单词前面加了一个 i 字母,iacheron,有了这个别扭的域名。

主机:

美国主机在国内的访问速度比较慢,大陆主机要备案,我买的是香港主机,容量500M,月流量:12G,数据库:3个,主域名:2个,子域名:3个。时间一年,以后会续费。

LOGO:
关于网站的图标,我自己随便设计了一个,看浏览器标签上的那个小图标,取了Acheron这个单词的第一个字母A。。。。

内容:

因为是个人网站,所以在上面放什么内容,全看我的个人兴趣了。按我现在的情况来说,读书笔记和编程笔记会偏多,也会分享一些好看的壁纸图片,电影音乐,好用的电脑手机软件等。