【问题标题】:How can I use spring to fire off an asynchronous batch task?如何使用 spring 来触发异步批处理任务?
【发布时间】:2012-03-29 23:16:58
【问题描述】:

基本上我想在我的 spring java 程序中做一些多线程,但我不知道如何使用我的服务器 spring 资源来创建一个新线程。

我查看了Any good Spring threading with a TaskExecutor examples?,但我无法弄清楚原始TaskExecutor 的来源,比如我如何将它传递给课堂?

TaskExecutor 也是在我的程序中创建另一个线程的最佳选择吗?

【问题讨论】:

  • 您提到了 Spring 和 Server...关于这是什么类型的应用程序的更多详细信息?它是一个网络应用程序吗?桌面应用程序?其他类型的网络服务应用程序?一个没有太多 UI 的通用处理应用程序(类似于命令行应用程序)?

标签: java multithreading spring


【解决方案1】:

TaskExecutor 在 xml spring beans 定义中定义,并作为构造函数的参数传递给实用程序类。

 <constructor-arg type="org.springframework.core.task.TaskExecutor" ref="taskExecutor" />

如果您可以选择,您绝对应该使用 TaskExecutor 和 Threadpool,而不是使用旧方式管理线程。

【讨论】:

  • 但是当我没有 TaskExecutor 传递给它时,我如何实际调用我拥有的新类?
  • TaskExecutor 和 somethingThatShouldHappenInAThread 都是由 Spring 创建的,您只需要在 somethingThatShouldHappenInAThread 上获取一个 ref(例如通过注入到您的服务层)并执行 classWithMethodToFire.run()。
【解决方案2】:

您提到的帖子很好地说明了您想要做什么。 taskExecutor 通过构造函数注入。查看该帖子中给出的 spring beans 配置。我相信使用 TaskExecutor 是一个好习惯。

【讨论】:

    猜你喜欢
    • 2015-07-18
    • 2017-06-10
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2020-07-08
    • 2013-02-13
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多