我有一个ThreadPoolTaskExecutor用于发送电子邮件。目前它的corePoolSize是5,而queueCapacity是默认值,即整数的最大值(无界队列)
<bean id="emailTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
</bean>
我面临的问题是我的线程很少被执行而很少有人没有执行。我已经将日志确认为相同,并得出结论,线程被提交给执行程序,但它们甚至没有启动。
我收到 RejectedExecutionException 异常。
这可能是什么原因?
答案 0 :(得分:1)
您提交给执行程序的Thread
被视为Runnable
,只会执行run()
。执行程序不知道它是一个Thread,Executor使用内部线程来执行任务。因此,线程不会是start()
,状态也不会被更改。
通常,在使用ThreadPoolExecutor时,您应该将任务包装到Runnable
,而不是Thread
。