当前位置: 首页 > 面试题库 >

在Tomcat下启动线程

于嘉许
2023-03-14
问题内容

有人告诉我,您不应该从在Tomcat(或其他任何容器)下运行的Web应用程序启动自己的线程。

Runnable myRunnable = new Runnable() {
  public void run() {
    System.out.println("I'm running");
  }
}

new Thread(myRunnable).start();

或类似地:

ScheduledThreadPoolExecutor retrySchedulerService = new ScheduledThreadPoolExecutor(3);
retrySchedulerService.schedule(dlrRetryTask, 120, TimeUnit.SECONDS);

您应该从Tomcat知道的某个线程池中请求一个线程,而不是上述任何一个。这有什么道理吗,还是完全是poppycock?


问题答案:

可以随意启动自己的线程,但是请记住在应用程序停止时将其停止。Tomcat有自己的thead池,用于处理传入的请求。我认为使用它不是一个好主意,即使您设法访问它也是如此。

通常,在Java EE环境中启动线程不是一个好习惯,但是在Tomcat之类的servlet容器中启动线程也不错。



 类似资料:
  • C:\apache-tomcat-8.0.8\bin\catalina.bat使用catalina_base: “C:\Program Files\Apache Software Foundation\Tomcat 8.0”使用catalina_home:“C:\apache-tomcat-8.0.8”使用catalina_tmpdir:“C:\apache-tomcat-8.0.8\temp”使

  • 当前的java版本是

  • 当我尝试启动嵌入式tomcat时,我的应用程序将一直运行,直到tomcat达到以下行: "Dez11, 2012 3:28:06PMorg.apache.coyote.AbstractProtocol启动信息:启动协议处理程序["超文本传输协议-bio-8080"]" 有人能帮我嵌入Tomcat吗? 顺致敬意,

  • 启动Tomcat失败,请检查C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.27\bin\catalina。bat和相关脚本是可执行的。 一直有这个问题在netbean。如何解决问题?请帮忙。

  • 我试图用systemctl配置Tomcat8.5.37,以在Ubuntu16.04上作为守护进程启动服务器。 为此,我在/etc/systemd/system/tomcat8.service创建了以下服务文件: Tomcat服务器是直接从apache下载的,并且只进行了解压缩。JDK是最新的Oracle JDK1.8。 当我通过startup.sh直接启动tomcat时,一切都很好。但是当我使用s

  • 我有一个Web应用程序部署到Tomcat的实例中。我希望能够将tomcat配置为在Tomcat本身启动时不自动启动该应用程序。但是,我确实希望启动Tomcat管理器,以便根据需要,我可以手动启动和停止Web应用程序。 我如何说服Tomcat这样工作?