gpt4 book ai didi

java - 如何使用 Spring TaskExecutor 在应用程序的所有请求中使用单个任务池

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:01 27 4
gpt4 key购买 nike

我如何使用 spring TaskExecutor 来生成任务,这样就不会抛出内存不足异常。

当前任务池配置:

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="56" />
<property name="maxPoolSize" value="112" />
<property name="queueCapacity" value="100" />
</bean>
<bean id="threadExecutor" class="com.content.ThreadHandler.ThreadExecutor">
<constructor-arg ref="taskExecutor" />
</bean>
</beans>

并且我通过使用加载 bean 在我的请求处理程序中使用 bean:

ApplicationContext context=new ClassPathXmlApplicationContext(new String[]{"ThreadPoolConfig.xml"});
BeanFactory factory=context;

ThreadExecutor myBean=(ThreadExecutor)factory.getBean("threadExecutor");

然后我将任务执行器用作 mybean.execute(task);

此配置是否为每个请求创建一个新池?

最佳答案

建议 1

您不应该为每个请求实例化 Spring 应用程序上下文。您应该有一个名为 SpringContext 或类似名称的单例类,它应该只实例化 Spring 应用程序上下文一次。所以你的客户端代码应该是

ThreadExecutor myBean=(ThreadExecutor)SpringContext.getInstance().getBean("threadExecutor");

如前所述,SpringContext 应该只是一个普通的单例类;在初始化方法中,您将实例化 spring applicationcontext。

public class SpringContext {

public ClassPathXmlApplicationContext context;

private static SpringContext _instance = new SpringContext();

private SpringContext() {
context = new ClassPathXmlApplicationContext(new String[]{"ThreadPoolConfig.xml"});
}

public static SpringContext getInstance() {
return _instance;
}


public Object getBean(String bean) {
Object beanObj = (context != null) ? context.getBean(bean) : null;
return beanObj;
}

}

建议 2

如果这不起作用,那么您应该查看以下内容:

spring bean 元素有一个scope 属性。您可以指定的两个值是 request 和 session,对应于 HTTPRequest 和 HTTPSession。尝试在您的情况下使用其中之一。 http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-factory-scopes

所以你的 bean 定义应该是这样的

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" scope="session">

关于java - 如何使用 Spring TaskExecutor 在应用程序的所有请求中使用单个任务池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948061/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com