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

带有TaskExecutor示例的良好Spring线程吗?

席俊
2023-03-14
问题内容

我试图了解如何在使用Spring进行事务管理的Java应用程序中实现线程。我已经在Spring文档中找到TaskExecutor部分,并且ThreadPoolTask​​Executor看起来很适合我的需求。

ThreadPoolTask​​Executor

该实现只能在Java
5环境中使用,也是该环境中最常用的一种。它公开了用于配置java.util.concurrent.ThreadPoolExecutor的bean属性,并将其包装在TaskExecutor中。如果您需要诸如ScheduledThreadPoolExecutor之类的高级功能,建议您改用ConcurrentTaskExecutor。

但是我不知道如何去使用它。我一直在寻找很好的例子,但是没有运气。如果有人可以帮助我,我将不胜感激。


问题答案:

很简单这个想法是,您有一个Bean的executor对象,该对象被传递到想要触发新任务的任何对象中(在新线程中)。令人高兴的是,您只需更改Spring配置即可修改要使用的任务执行程序类型。在下面的示例中,我将使用一些示例类(ClassWithMethodToFire)并将其包装在Runnable对象中以进行射击;您实际上还可以在您自己的类中实现Runnable,然后在execute方法中调用classWithMethodToFire.run()

这是一个非常简单的示例。

public class SomethingThatShouldHappenInAThread {
     private TaskExecutor taskExecutor;
     private ClassWithMethodToFire classWithMethodToFire;

     public SomethingThatShouldHappenInAThread(TaskExecutor taskExecutor,
                                               ClassWithMethodToFire classWithMethodToFire) {
          this.taskExecutor = taskExecutor;
          this.classWithMethodToFire = classWithMethodToFire;
     }

     public void fire(final SomeParameterClass parameter) {
          taskExecutor.execute( new Runnable() {
               public void run() {
                    classWithMethodToFire.doSomething( parameter );
               }
          });
     }
}

这是春豆:

<bean name="somethingThatShouldHappenInAThread" class="package.name.SomethingThatShouldHappenInAThread">
     <constructor-arg type="org.springframework.core.task.TaskExecutor" ref="taskExecutor" />
     <constructor-arg type="package.name.ClassWithMethodToFire" ref="classWithMethodToFireBean"/>
</bean>

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
     <property name="corePoolSize" value="5" />
     <property name="maxPoolSize" value="10" />
     <property name="queueCapacity" value="25" />
</bean>


 类似资料:
  • 问题内容: 我试图了解如何在使用Spring进行事务管理的Java应用程序中实现线程。我已经在Spring文档中找到TaskExecutor部分,并且ThreadPoolTask​​Executor看起来很适合我的需求。 ThreadPoolTask​​Executor 该实现只能在Java 5环境中使用,也是该环境中最常用的一种。它公开了用于配置java.util.concurrent.Thre

  • 几天前我读过Oauth2,它有一些实体,比如客户端、资源所有者、资源服务器、授权服务器,我也理解这些解释。但我不完全理解补助金的类型,我对以下类型感到困惑。Oauth2有4种不同的授权类型,如, 授权码 暗示 资源所有者密码凭据 客户凭证 请给我一些上述类型的实时示例,以区分实现。我需要知道Spring Securityoauth2的授权实现类型以及Spring Securityoauth2的完整

  • 我使用JPA和Hibernate进行持久化,并有Spring Boot的一些自动配置帮助。我正在运行一个JUnit测试,它在JPA Repository中保存了一些记录。然后它实例化一个新的Spring托管线程,并由ThreadPoolTaskExecutor运行。该线程将尝试获取先前添加的记录,但没有成功。 以下是测试和可运行线程的相关代码: 因此,在我插入了rtmpSourceSample对象

  • 问题内容: 我正在使用lucene为文档建立索引并执行搜索,之后我立即将其删除。所有这一切都可以看作是有点原子的动作,包括以下步骤: 索引(作者) - >搜索(搜索者) - >按得分获取文档(阅读器) - >删除文档(阅读器) 该操作可由同一索引上的多个并发线程执行(使用)。 重要说明: 每个线程处理一组单独的文档,因此一个线程不会碰到另一个线程的文档 为此,我有几个问题: 1)我应该使用的单个实

  • 我在Spring Boot应用程序中使用应该异步运行的方法之一做了一个类。因为我读的方法应该是注释,而且我还必须运行一个bean。但是在Spring手册中http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html我没有找到任何信息或示例,如何在没有XML配置的情况下使用注释运行。

  • 问题内容: 对于同时使用Spring和Hibernate,我需要快速入门,并且正在寻找一些示例代码来进行修改和扩展。Struts2和Spring Security集成的加分点。 问题答案: Struts2网站上有一个示例项目,其中包括Spring,Hibernate和Struts2,这些项目似乎具有我想要的大部分功能。它包括一个基本的JPA配置,但不提供DAO类。 通用DAO模式被记录在Hiber