ThreadPoolTask​​Executor没有执行提交给它的所有线程

时间:2015-10-08 08:46:42

标签: java multithreading concurrency threadpool

我有一个ThreadPoolTask​​Executor用于发送电子邮件。目前它的corePoolSize是5,而queueCapacity是默认值,即整数的最大值(无界队列)

<bean id="emailTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <property name="corePoolSize" value="5" />
</bean>

我面临的问题是我的线程很少被执行而很少有人没有执行。我已经将日志确认为相同,并得出结论,线程被提交给执行程序,但它们甚至没有启动。

我收到 RejectedExecutionException 异常。

这可能是什么原因?

1 个答案:

答案 0 :(得分:1)

您提交给执行程序的Thread被视为Runnable,只会执行run()。执行程序不知道它是一个Thread,Executor使用内部线程来执行任务。因此,线程不会是start(),状态也不会被更改。

通常,在使用ThreadPoolExecutor时,您应该将任务包装到Runnable,而不是Thread