1. 程式人生 > >java定時任務詳解

java定時任務詳解

需求:定時傳送郵件,定時採集資訊,定時分析日誌。。等等需要按規律定時觸發的函式。

前提環境

Spring+Struts2開發框架
檔案結構如下:
這裡寫圖片描述
handler的類就是定時任務將要觸發的類,而resources包中的4個配置檔案分別為:

app-handler.xml :

<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <!-- 測試任務 -->
    <bean id="quarzTestHandler" class="你的包名路徑.TestHandler">
    </bean>
</beans>

程式碼解析:
beans中的頭部都是一樣的,直接拿去用就可以。真正需要新增的是bean中的內容,class的值就是定時任務的實現類。而id則是找到app-quarz.xml配置定時屬性的xml檔案。

app-quarz.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//Spring//DTD Bean//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="handlerChedulerFactoryBean"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <!-- 測試定時  -->  <ref local="quarzTest" />
        </list>
    </property>
</bean>

<!-- 測試定時 -->
<bean id="quarzTest" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail">
        <ref bean="quarzTestHandlerDetail" />
    </property>
    <property name="cronExpression">
        <value>0/50 * * * * ?</value>
    </property>
</bean>
<bean id="quarzTestHandlerDetail"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject">
        <ref bean="quarzTestHandler" />
    </property>
    <property name="targetMethod">
        <value>handler</value>
    </property>
</bean>
</beans>

程式碼解析:
這個xml檔案中,配置定時的各種屬性,並指定handler類中的執行方法。

  • local=”quarzTest” 找到–> id=”quarzTest”
    quarzTest中name=”cronExpression” 的value值中進行定時配置配置方法再最後統一總結。
  • bean=”quarzTestHandlerDetail” –> id=”quarzTestHandlerDetail”
    quarzTestHandlerDetail的bean中指定找到app-handler.xml 中的對應bean=”quarzTestHandler”
    name=”targetMethod” 指定handler類中的執行方法。

log4j.properties:

    log4j.rootLogger=info, console, original
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=[%d{dd HH:mm:ss}] %p %c{1}.%M(%L) | %m%n
    log4j.appender.original=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.original.File=/data/logs/info/info_task_war.log
    log4j.appender.original.layout=org.apache.log4j.PatternLayout
    log4j.appender.original.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} %c{1}.%M(%L) [%p] %m%n

該檔案是配置檔案,指定定時引數的配置問題。

Handler的java類程式碼:

package com.cedarmg.info.handler;
import org.apache.log4j.Logger;
public class TestHandler {
    @SuppressWarnings("unused")
    private static Logger logger = Logger.getLogger(TestHandler.class);
    private static int i=1;
    public void handler() {
        i++;
        System.out.println(i+" 定時任務執行結束! ");
    }
}

OK,以上就是再java中執行定時任務的配置檔案和程式碼。

相關推薦

java定時任務

需求:定時傳送郵件,定時採集資訊,定時分析日誌。。等等需要按規律定時觸發的函式。 前提環境 Spring+Struts2開發框架 檔案結構如下: handler的類就是定時任務將要觸發的類,而resources包中的4個配置檔案分別為:

crontab定時任務

文件 install 重新 init 設定 ntpdate 關閉 同步 星期 1、安裝crontab:yum install crontabs 說明:/sbin/service crond start //啟動服務/sbin/service crond stop //關閉

Linux 定時任務

什麽 file 同名 實現 link 打印 環境 grep 導入 fileclear.sh tamcdir=${HOME}/ora/user_projects/domains/tamc cd ${tamcdir} echo rm -f `ls heapdump*.phd

crond定時任務

ceo 開發 單用戶 init.d 管理 deny rest fin nta 首先來了解一下chkconfig這個命令: chkconfig命令檢查、設置系統的各種服務。這是Red Hat公司遵循GPL規則所開發的程序,它可查詢操作系統在每一個執行等級中會執行哪些系統服務,

springboot整合quartz定時器實現定時任務

最近需要 做一個按照時間,定時初始化一些資訊的功能,研究了一下quartz,也簡單瞭解一下TimerTask,廢話不多說。 quartz和TimerTask的區別: timer是jdk自帶的(可想而知,肯定是不怎麼好用)。 Quartz可以通過cron表示式精確到特定時間執行,而T

linux crontab定時任務

使用crontab你可以在指定的時間執行一個shell指令碼或者一系列Linux命令。例如系統管理員安排一個備份任務使其每天都執行 如何往 cron 中新增一個作業? # crontab –e0 5 * * * /root/bin/backup.sh 這將會在每天早上5點執行 /root/bin/bac

Linux中的Crontab定時任務

crontab介紹 在日常的專案開發中,我們有時候會需要定時的執行一些人物,比如資料庫備份,或者你的專案中的某個指令碼需要定期定時的去執行等等。那麼這些需求都可以所使用linux中crontab定時任務來完成。 Crontab: 用於設定週期性被執行的指令 該命令

spring定時任務(@Scheduled註解)

在springMVC裡使用spring的定時任務非常的簡單,如下: (一)在xml里加入task的名稱空間 xmlns:task="http://www.springframework.org/schema/task" http://www.spr

golang定時任務

在程式中經常需要按照指定的週期(以毫秒計)來呼叫函式或計算表示式,也即實現定時任務,使用time包中Tick和Sleep可以輕鬆實現定時任務 使用Tick每隔100毫秒列印“Hello TigerwolfC” for range time.Tick(time.Millisecond*10

玩轉SpringBoot之定時任務

pac multi mpi 例如 mark tor tro size har 序言 使用SpringBoot創建定時任務非常簡單,目前主要有以下三種創建方式: 一、基於註解(@Scheduled) 二、基於接口(SchedulingConfigurer) 前者相信

【Spring】定時任務例項[email protected]

最近在做專案,時間比較緊張,也有比較久沒寫部落格了。 現在專案的Redis快取需要用到定時任務,就學習了一下Spring 的@Scheduled註解。使用起來很簡單。 這個例子是建立在之前我的一篇部落格的例項上面的。 也就是架好了SSM框架。 SSM

【系統學習SpringBoot】SpringBoot定時任務

強大的SpringBoot對定時任務這種常用的功能做了很好的封裝,,只需三步即可完成 一、新增依賴 pom.xml檔案中新增如下依賴: <dependencies> <dependency> <

spring如何設定定時任務(@Scheduled)

目錄 一:註解方式配置定時任務: 二:@Scheduled 三:原理簡介 四:其他 以前用過這個註解實現定時任務,但是隻是使用,現在做專案又用到了這個功能,系統的學習一下~ spring定

spring @scheduled 定時任務

使用@scheduled定時任務有兩種方式,一種是直接@scheduled(cron=”0 0 0 ? * * “) 還有一種是使用xml配置 對於這兩種方式,首先需要在Spring配置檔案xmlns加入 xmlns:task="http://www.

linux下新增定時任務 示例

linux下定時執行任務的方法 在Linux中你應該先輸入crontab -e,然後就會有個vi編輯介面,再輸入0 3 * * 1 /clearigame2內容到裡面 :wq 儲存退出。 在LINUX中,週期執行的任務一般由cron這個守護程序來處理[ps -ef|grep cron]。cron讀取一個或

PHP Yii 命令列程式以及定時任務

為啥要編寫命令列程式? 命令列程式通常是一個指令碼,但是PHP Yii 是web開發語言,如何能開發指令碼程式? 所以,首先我們要明白使用PHP Yii 編寫指令碼語言的目的和原理。 目的 設想這麼一

SpringCloud之Eureka的定時任務(Server)

1.EurekaServer內定時更新叢集內其他Server節點 public class PeerEurekaNodes { /** * Eureka-Server 叢集節點陣列 */ private volatil

Linux下Python腳本自啟動與定時任務

文件 自啟 權限 crontab 自動運行 command 任務 bin www 這篇文章主要給大家介紹了關於Linux下Python腳本自啟動與定時任務的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值。前言 最近同事問了一

quartz定時任務

------------------------開始  application-quartz.xml----------

java定時任務

導致 println 正常 延遲執行 first 指定 線程終止 ont 打印 在我們編程過程中如果需要執行一些簡單的定時任務,無須做復雜的控制,我們可以考慮使用JDK中的Timer定時任務來實現。下面LZ就其原理、實例以及Timer缺陷三個方面來解析java Timer定