java - 将任务提交到 ThreadPoolTask​​Executor 时出现 RejectedExecutionException

标签 java spring junit

spring ThreadPoolTask​​Executor 用于在我们的应用程序中进行并发处理。成功完成所有作业后,将调用摊牌方法。这个实现工作正常,执行 junit 时出现问题。

我使用SpringJUnit4ClassRunner为此类编写了多个测试用例。第一个测试用例将完美运行并关闭 ThreadPoolTask​​Executor。但是当第二个测试用例尝试提交任务时,会引发以下异常

org.springframework.core.task.TaskRejectedException: Executor [java.util.concurrent.ThreadPoolExecutor@16cefa8] did not accept task: com.sample.SampleJob@ea3cdf
    ....
aused by: java.util.concurrent.RejectedExecutionException
    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1768)
    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)

根据我的分析,抛出异常是因为我试图在 ThreadPoolExecutor 关闭时将任务提交给它。

有人可以帮我解决这个问题吗?

最佳答案

不确定何时关闭执行器,但我认为不应在每个测试用例之后调用 shutdown,而应该在所有测试用例结束时调用 shutdown。您可以使用以下内容:

@AfterClass
public void tearDown(){
 //shutdown your executor
}

希望有帮助:)

关于java - 将任务提交到 ThreadPoolTask​​Executor 时出现 RejectedExecutionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13269756/

相关文章:

java - 如何通过 Youtube Data Api V3 获取建议 channel ?

java - 为什么这个 Hashmap 迭代不起作用?我收到 NullPointerException

spring - 使用自己的登录表单进行太多重定向 - Spring Security

java - 获取Spring文件上传的异常

java - 如何模拟 "this"

java - 在我们的类(class)中使用log4j时如何纠正 "java.lang.NoClassDefFoundError"?

java - JTabbedPane - 无法删除单个选项卡

java - Spring框架支持什么版本的stomp

java - JerseyIncation 表达式在类中不可用,但可通过 IntelliJ 调试器中的 Evaluate 表达式访问

java - 如何对读取属性文件的类进行单元测试