我配置了ThreadPoolTaskExecutor
,但结果与我预期的不同。它的以下行为是否正确?怎么可以解释呢?
@Bean
public TaskExecutor taskExecutor() {
int core = 1;
int max = 1;
int queue = 2;
ThreadPoolTaskExecutor bean = new ThreadPoolTaskExecutor();
bean.setCorePoolSize(core);
bean.setMaxPoolSize(max);
bean.setQueueCapacity(queue);
bean.setKeepAliveSeconds(60);
return bean;
}
@Scheduled(initialDelay = 5000, fixedDelay = 10000)
public void init() {
int nthreads = 1;
for (int i = 0; i < nthreads; i++)
async.run(i);
}
@Service
public class MyAsync {
@Async("taskExecutor")
public void run(int i) {
Sysout("running: " + i);
}
}
谁可以为不同的池配置解释以下结果:
nthreads=1
。)我没有得到异步执行程序的这种行为。
我的目标如下:创建一个运行1-2个线程的Executor
(取决于负载)。任务应排队最多5个线程。如果任何线程在队列中超过60秒,它们应该超时并在未执行时被删除。