之前有篇文章讲过随web容器启动某个Java类的某个方法的实现,具体有两种方式,参考原文章:
http://blog.csdn.net/u010523770/article/details/44677447

但是在我的web项目中遇到了这样一个问题,我在需要随web容器的类的方法中加入了一个while(true),因为我要不停的产生随机数据,所以这个我必须要有这样一个循环,问题是当我启动web容器的时候,spring加载到这个方法的时候就卡在这个循环这里了,然后web容器就没有办法继续启动了。

解决方案:增加一个线程,把循环的方法体放到这个新线程中去:
new Thread(){public void run(){while(true){//你的逻辑}}}.start();


public class SpringInitMethod implements InitializingBean,
ServletContextAware {
@Override
public void afterPropertiesSet() throws Exception {

}
@Override
public void setServletContext(ServletContext arg0) {
while (true) {}

问个spring初始化代码块的问题,我的web程序是在spring框架下做的,但是我需要一个类来产生数据,这个类在web容器启动的时候就开始产生数据。
我把这个类也交给spring管理了,通过网上查资料,了解到,只有这个类继承了下面两个接口import org.springframework.beans.factory.InitializingBean;
import org.springframework.web.context.ServletContextAware;那么在web容器加载spring的时候setServletContext的方法体就会开始执行。       现在我在这个setServletContext方法里面加了一个while(true) 循环,发现web容器启动的时候就在这里循环了,web容器无法启动完成,就卡在这里了。我该如何实现我做,我必须用到循环,不断产生数据。  
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐