Дабы посчитать, что у меня есть следующее:
public class MyRunnable implements Runnable {
public void run() {
//do something expensive
}
}
public class ThreadExecutor {
private TaskExecutor taskExecutor;
public ThreadExecutor(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void fireThread(){
taskExecutor.execute(new MyRunnable());
}
}
мой xml выглядит следующим образом:
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="queueCapacity" value="25" />
</bean>
<bean id="threadExecutor" class="com.vanilla.threads.controllers.ThreadExecutor">
<constructor-arg ref="taskExecutor" />
</bean>
в моем контроллере Spring MVC я запускаю задачу:
@RequestMapping(value="/startTask.html", method=RequestMethod.GET)
public ModelAndView indexView(){
ModelAndView mv = new ModelAndView("index");
threadExecutor.fireThread();
return mv;
}
Теперь давайте рассмотрим, что я хотел бы создать еще один запрос (@RequestMapping(value="/checkStatus.html"
), который сообщит, была ли завершена задача, начатая в моем предыдущем запросе.
Так что мои вопросы просты:
1) Могу ли я присвоить имя задаче в TaskExecutor и, если да, как я могу это сделать?
2) Как проверить, что задание с таким конкретным именем выполнено?