Java Web服务线程创建

Java Web服务线程创建,java,multithreading,web-services,Java,Multithreading,Web Services,如何在Web服务中创建新线程?我需要线程在web服务的“main”上启动,而不是在服务器调用中启动 我需要它作为工作线程,所以服务器调用将发送消息到线程-工作将在BG中完成,不会阻止服务器请求 我不知道怎么做您需要创建一个线程池,您可以将任务提交到该线程池的线程上执行 创建线程池的最简单方法是使用类创建的线程池。您可以尝试在主类中使用静态初始化器 在这里,我使用它来创建一个计时器任务,它每小时都会重新读取我的属性文件,但您几乎可以将它们用于任何事情,包括创建新线程 static { // R

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

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


我不知道怎么做

您需要创建一个
线程池
,您可以将任务提交到该线程池的线程上执行


创建线程池的最简单方法是使用类创建的线程池。

您可以尝试在主类中使用静态初始化器

在这里,我使用它来创建一个计时器任务,它每小时都会重新读取我的属性文件,但您几乎可以将它们用于任何事情,包括创建新线程

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);
}

这个问题并不清楚,但如果作者没有创建自己的实现并使用第三方ws-stack,那么我们这里就有问题了:大多数实现已经使用线程池,并且池中的每个线程都被不断重用。在那种情况下,我会考虑启动新线程作为一个坏的实践。