package com.wanhua.thread;
//定时发送任务线程
import java.util.List;
import java.util.TimerTask;
import play.db.jpa.JPAPlugin;
import controllers.News;
import models.ChildrenNew;
import models.Log;
import models.New;
public class SendNewsTask extends TimerTask {
// 选择发送的子新闻
private List<ChildrenNew> childrenNews;
// 发送时间
private String issuesTime;
// 作者
private String author;
/**
* 构造函数
*
* @param childrenNews
*/
public SendNewsTask(String author, String issuesTime, List<ChildrenNew> childrenNews) {
this.author = author;
this.issuesTime = issuesTime;
this.childrenNews = childrenNews;
}
@Override
public void run() {
// 选择发送的子新闻
List<ChildrenNew> childrenNews = this.childrenNews;
String issuesTime = this.issuesTime;
String author = this.author;
// 添加JPA环境
JPAPlugin.startTx(false);
// 发送新闻任务
New.sendNewsTask(author, issuesTime, childrenNews);
JPAPlugin.closeTx(false);
}
}
// 定时任务线程的调用,实现定时发送新闻通知
Timestamp publishTime = PrefUtil.forTimestamp(issuesTime);
//定时发送的某个时刻
Date sendDate = publishTime;
Timer timer = new Timer();
try {
// 定时发送新闻通知
timer.schedule(new SendNewsTask(author, issuesTime, childrenNews), sendDate); // 一个特定时间后运行
} catch (Exception e) {
// Timer与TimerTask是独立的两个物件,当使用Timer的schedule()方法排定TimerTask之后,
// 则必须等执行Timer的cancel()执行之后,让TimerTask与Timer脱离关系
timer.cancel();
}