2012-03-27 83 views
0

如何在web服务中创建新线程?我需要该线程在Web服务的“主要”上启动,而不是在服务器调用中启动。Java WebService线程创建

我需要它作为工作线程,所以服务器调用会发送消息到线程 - 工作要在BG中完成,并且不会阻塞服务器请求。

我不知道该怎么做

回答

1

你需要创建一个ThreadPool,这是一个对象,你可以提交其将被该线程池的线程(S)上执行任务。

制作ThreadPool的最简单方法是使用由Executors类创建的一个。

+0

这是不是从这个问题不清楚,但如果作者没有创造它自己的实施和使用第三方WS栈,那么我们这里有问题:大多数的实现已经在使用线程池,并在池中的每个线程不断重复使用。在这种情况下,我会考虑将新线程作为不良做法。 – Osw 2012-03-27 19:05:19

1

您可以尝试在您的主类中使用静态初始化程序。

这里我使用一个来创建一个计时器任务,它每隔一小时重新读取我的属性文件,但您几乎可以使用它们进行任何操作,包括创建新线程。

static { 
    // Read my properties at start-up. 
    readProperties(); 
    // Start a new timer task to repeat every hour. 
    int rate = Debug? 60*1000 : 1*60*60*1000; 
    // Make a daemon scheduled thread to re-read properties. 
    new Timer("Read properties timer", true).schedule(new TimerTask(){ 
     public void run() { 
      readProperties(); 
     } 
    }, rate, rate); 
}