学习线程,做了个小的测试,大概需求是,启动TomCat的时候自动启动这个线程,自动运行保存功能
public class AutoSave extends Thread{
public void runThread(){
new AutoSave().start();
}
//保存
public void save(){
BackUpThreadSave bua = new BackUpThreadSave();
bua.addBackup();//保存的方法  
}

    public synchronized void run() {
        while(true) {
            try {
                sleep(8000);
                save();
            } catch( Exception e) {
            }
        }
    }
}addBackup()方法的类继承 HibernateDaoSupport
可以执行到addBackup()方法内部
但是一到getSession().save(entity);就执行不下去了,也不报错我加上打印
System.out.println("--1--");
getSession().save(bu);
System.out.println("--2--");也一直只输出 “--1--”
请问这种要怎么解决啊,谢谢啦

解决方案 »

  1.   

    但是一到getSession().save(entity);就执行不下去了,也不报错根据楼主说的,这就不是线程的问题了, 查查你的hibernate吧,加断点调试一下
      

  2.   

    应该也不是hibernate有问题哦
    因为我要是 通过action 调用这个方法addBackup(),就可以执行getSession().save(entity),可以保存数据
      

  3.   

    有可能是你要自动执行时,你的spring中的applicationContext.xml的配置文件还没有被解析到,那当然也就取不你要的对象了,我估计是这个地方出的错。你的contextLoaderListern有没有配置好。
      

  4.   

    ContextLoaderListener 是配置好的
    因为我在页面上有个 按钮 “保存”都可以手动保存(和线程里面调用的是同一个保存方法)
     
    都可以getSession().save(entity);
    并打印
    "--1--"
    "--2--"
      

  5.   

    如果出错,应该会有异常信息的,你是不是直接在catch里面就把异常给忽略了?检查下是否写了类似于: ex.printStackTrace(); 这样?
      

  6.   

    写了个try果然还是有个错误  =.=!
    --in1--
    java.lang.NullPointerException 
    at org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSession(HibernateDaoSupport.java:142)