Timer是个新线程,与连接数据库的线程不是同一个,我要在Timer中对数据操作还要重新连接一次数据库?
如果需要,怎么连接??
现在一直报Exception in thread "Timer-0" java.lang.NullPointerException
这个错误!
你是想完成定时任务之类的?还是异步之类的? 考虑Spring Schedule,或者Spring async,Timer基本没见使用过
求解 求指导 大神何在?
public class TimerTaskThread {
private static final Logger logger = LoggerFactory.getLogger(TimerTaskThread.class);
public void startTimer() {
TimerTask task = new TimerTask() {
@Override
public void run() {
try {
//这里可以实现操作数据库,或者调用其它类的方法实现数据的增删改查
} catch (Exception e) {
logger.error("定时任务执行出错:"+e.getMessage());
}
}
};
Timer timer = new Timer();
timer.schedule(task, buildTime(), 1000 * 60 * 60 * 24);
}
private static Date buildTime() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();
if (time.before(new Date())) {
//若果当前时间已经是凌晨零点后,需要往后加1天,否则任务会立即执行。
//很多系统往往系统启动时就需要立即执行一次任务,但下面又需要每天凌晨0点执行,怎么办呢?
//很简单,就在系统初始化话时单独执行一次任务(不需要用定时器,只是执行那段任务的代码)
time = addDay(time, 1);
}
return time;
}
private static Date addDay(Date date, int days) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, days);
return startDT.getTime();
}
}
希望能帮到你...