在服务器启动时调用Servlet中的Thread.sleep时,Tomcat无法启动

时间:2011-02-24 10:00:29

标签: java tomcat

在服务器启动时调用Servlet中的Thread.sleep时,Tomcat无法启动。

在服务器启动时加载Servet。在servlet的init方法中,调用MailSenderUtility类的sendMail方法。在sendMail方法中,我调用了Thread.sleep()方法,如果程序不是8 PM,则将程序休眠一段计算时间。

由于此代码(Thread.sleep)服务器无法启动。如果我删除Thread.sleep语句,它工作正常。

如果有更好的方法,请帮助并告诉我。据您所知,由于某些限制,我不能将Quartz和Java Timer类用于我的调度程序。

感谢大家的支持。

Dheeraj

2 个答案:

答案 0 :(得分:2)

Dheeraj你不能“停止”负责初始化的线程。在其他地方做它因为Servlet对象不适合这个。

您需要的是ContextListener。很好描述also here

祝你好运!

答案 1 :(得分:2)

显然你正在让主线程处于睡眠状态。

相反,您应该创建一个单独的线程并在其上运行MailSenderUtility。然后你可以在不影响主初始化线程的情况下休眠这个线程。

一个简单的例子:

    new Thread(new Runnable(){
        public void run() {
            // start MailSenderUtility here
        }
    }).start();