java - 如何编写从tomcat运行的java批处理

标签 java multithreading performance spring tomcat

我正在编写在 TomCat.7 上运行的 spring web 应用程序,其中一个功能是使用 java.concurrency 处理来自数据库的数据。

由于计算,我预计数据库处理将是一个非常耗时的处理过程,我需要此过程的高性能。

我的问题是在 TomCat 容器中运行该线程是否是个好主意(或者可能是唯一的可能)?

@RequestMapping(value = "run_process", method = RequestMethod.GET)
    public RequestWrapper runProcess(ModelMap model) {

        Runnable runCrawler = new Crawler();
        runCrawler.run();
        System.out.println("##run_process!");

        return new RequestWrapper();
    }

我的项目结构是这样的:

-源代码
-com.scanner.batchprocess
-com.scanner.crawler
-com.scanner.webapp.controllers

我在创建具有计算挑战性的程序方面没有任何经验,所以恐怕我应该使用主类创建新的干净 Java 项目,只要用户运行 BatchProcess 就会从 webapp 调用该项目。 与真正的 Java 应用程序相比,Tomcat 应用程序的执行时间可能存在显着时间差异吗?

最佳答案

Spring Batch 是您的理想选择。它具有批处理所需的所有功能。而且它易于学习、理解和配置。您可以通过引入线程和其他众多扩展机制来在 spring batch 中进行性能调整,请引用 http://www.mkyong.com/tutorials/spring-batch-tutorial/有很好的例子

关于java - 如何编写从tomcat运行的java批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19071700/

相关文章:

python - 按元素有效地分组数组

windows - 那么 Sleep() 和 this 是一样的吗?

java - 在 EMF 插件项目中使用外部库时出现 NoClassDefFoundError 异常

带有 OAuth 的 Java 安全框架

java - 如何通过 URL 连接发送 cookie

c - 结束 gcc C Linux 中第一个成功的线程

java - 如何使用Java中的定时器来运行Job指定的时间?

ruby - 终止时杀死所有线程

java - Alloy API 导致 java.lang.UnsatisfiedLinkError

python-3.x - Ray 在 4 个 CPU 核心上工作时性能没有提高