问题是这样的:在tomcat中的一个sevlet有一个java计时器,每隔几小时运行,从一个地方得到一些数据插入mysql中,现在发现,插入的数据不完全就是说一条记录其中有个字段一直显示0,而实际中是肯定有的.奇怪的是我的日志中没有显示有插入的操作,但是数据已经插入了并且是不完全的数据.如果我reload tomcat,日志就会记录,数据也完全,一切正常.同样的方法我放在jsp中手工执行都是正确的,就是在这个计数器里定时半夜执行就会有问题.(日志显示有执行,但没有插入数据的日志,可是有数据插入),而代码中如果执行了插入必定会执行记录日志.这种情况以前都一直没问题,但是从最近一个月来就出现了,请问会是什么情况呢?实在搞不懂了!
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
log.error("开始loadConfig");
loadConfig();
log.error("结束loadConfig");
}
}, 1000*30, 1000 * 60 * 60 * 6); } private static void loadConfig(){
//这里代码绝对没问题,就是插入一些数据到mysql,记录一些日志,并且是插入一条记录一条日志 }在半夜执行的时候就有问题,也不报错,日志记录就是
开始loadConfig
结束loadConfig
但是已有部分数据插入数据库
当我白天重新reload,又正常了,日志显示
开始loadConfig
开始插入数据1,sql="XXX"
开始插入数据2,sql="XXX"
结束loadConfig
private boolean runing=false;
static {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
log.error("开始loadConfig");
if(!runing){
runing=true;
loadConfig();
runing=false;
}
log.error("结束loadConfig");
}
}, 1000*30, 1000 * 60 * 60 * 6); 不过你的计时器几个小时运行一次,应该不是这个问题