在服务器启动时调用Servlet中的Thread.sleep时,Tomcat无法启动。
在服务器启动时加载Servet。在servlet的init方法中,调用MailSenderUtility类的sendMail方法。在sendMail方法中,我调用了Thread.sleep()方法,如果程序不是8 PM,则将程序休眠一段计算时间。
由于此代码(Thread.sleep)服务器无法启动。如果我删除Thread.sleep语句,它工作正常。
如果有更好的方法,请帮助并告诉我。据您所知,由于某些限制,我不能将Quartz和Java Timer类用于我的调度程序。
感谢大家的支持。
Dheeraj
答案 0 :(得分:2)
Dheeraj你不能“停止”负责初始化的线程。在其他地方做它因为Servlet对象不适合这个。
您需要的是ContextListener。很好描述also here。
祝你好运!答案 1 :(得分:2)
显然你正在让主线程处于睡眠状态。
相反,您应该创建一个单独的线程并在其上运行MailSenderUtility。然后你可以在不影响主初始化线程的情况下休眠这个线程。
一个简单的例子:
new Thread(new Runnable(){
public void run() {
// start MailSenderUtility here
}
}).start();