日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 定时线程

發布時間:2023/12/9 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 定时线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

功能需求:項目啟動時,后天起一個定時線程,每個小時跑一次,查出數據發郵件出來。

主要使用

  • public void schedule(TimerTask task, long delay)

    task被安排在delay(毫秒)指定的時間后執行。

  • public void schedule(TimerTask task,long delay, long period)

?     task被安排在delay(毫秒)指定的時間后執行。執行后將每隔period(毫秒)反復執行。

  • ? public void scheduleAtFixedRate(TimerTask task,Date firstTime, long period)

?     task被安排在firstTime指定的時間執行。執行后將每隔period(毫秒)反復執行。每一次重復的時間時盒第一次執行而不是和前一次執行有關。因此執行的總速度是固定的。

  • ? public void scheduleAtFixedRate(TimerTask task,long delay,long period)

?     task被安排在delay(毫秒)指定的時間后執行。執行后將每隔period(毫秒)反復執行。每一次重復的時間時盒第一次執行而不是和前一次執行有關。因此執行的總速度是固定的。

?

package com.odianyun.ad.service.alertMailJob;

import com.odianyun.ad.business.read.manage.AdSourceReadManage;
import com.odianyun.ad.business.utils.ConfigUtil;
import com.odianyun.ad.model.po.AdSourcePO;
import com.odianyun.hotword.business.read.manage.HotWordReadManage;
import com.odianyun.hotword.business.read.manage.impl.HotWordReadManageImpl;
import com.odianyun.search.whale.common.util.EmailUtil;
import com.odianyun.search.whale.common.util.NetUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.mail.MessagingException;
import java.util.*;

public class ExpiredJob {

static Logger logger = Logger.getLogger(ExpiredJob.class);

@Autowired
AdSourceReadManage adSourceReadManage;

@Autowired
HotWordReadManage hotWordReadManage;

private static long sendIntervalMinus;
private static boolean isSendErrorMail;
private static String sendTo;

static {
ConfigUtil.loadPropertiesFile("mail.properties");
sendIntervalMinus = ConfigUtil.getLong("mail.sendIntervalMinus", 60);
isSendErrorMail = ConfigUtil.getBool("mail.isSendErrorMail", true);
sendTo = ConfigUtil.get("mail.msgTo");
}


public ExpiredJob() {
     //現在構造函數里面,然后在spring bean的配置文件里增加這個bean,讓spring容器創建這個實例,也就達到了項目啟動時啟動線程的目的

//線程用于掃描24小時以內即將過期的廣告
//此線程啟動后開始執行,每一個小時執行一次
Timer timer = new Timer(false);
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
try {
List<AdSourcePO> adlist = adSourceReadManage.getExpiredAdSource();
List<String> hotwordlist = hotWordReadManage.getExpiredHotWordIds();
if (CollectionUtils.isNotEmpty(adlist)) {
StringBuffer sb = new StringBuffer();
for(AdSourcePO adSourcePO : adlist){
sb.append("廣告名稱 : " + adSourcePO.getName() + " ,廣告位 : " +adSourcePO.getCodeName() +" </br>");
}
EmailUtil.sendMail("Below " + adlist.size() + " ads will be expired in 24 hours , send from " + NetUtil.getLocalIP(), sendTo, sb);
logger.info("Send ad " + adlist.toString() + " mail successfully");
} else {
logger.info("No ads will expired in 24 hours.");
}

if (CollectionUtils.isNotEmpty(hotwordlist)) {
EmailUtil.sendMail("Below " + hotwordlist.size() + " hot words will be expired in 24 hours , send from " + NetUtil.getLocalIP(), sendTo, hotwordlist);
logger.info("Send hot words " + hotwordlist.toString() + " mail successfully");
} else {
logger.info("No hot words will expired in 24 hours.");
}
} catch (Exception e) {
logger.error("Send ad expired mail exception", e);
}
}
}, 1000 * 60 * 1, 1000 * 60 * sendIntervalMinus);
}

;


}

轉載于:https://www.cnblogs.com/wonderlands/p/5455319.html

總結

以上是生活随笔為你收集整理的Java 定时线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。