Java – spring task executor: how to notify when all tasks are completed and executed and if they are not in a time slot
•
Java
I am a novice in Java programming. I have a problem I use the spring taskexecutor interface for thread pool management I have to extract content from different sources (HTTP, files, databse) in parallel, so I use taskexecutor
Solution
You can also create a loop after creating a task and check for timeouts:
ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Config.xml");
ThreadPoolTaskExecutor taskExecutor = (ThreadPoolTaskExecutor) context.getBean("taskExecutor");
taskExecutor.execute(new PrintTask("YOUR TASK ONE"));
taskExecutor.execute(new PrintTask("YOUR TASK TWO"));
double timeOutMs = 3000.0 ; // 3 seconds of maximum duration
double startTime = Sy@R_301_2354@.currentTimeMillis() ;
//check active thread,if zero then shut down the thread pool
for (;;) {
int count = taskExecutor.getActiveCount();
Sy@R_301_2354@.out.println("Active Threads : " + count);
if (Sy@R_301_2354@.currentTimeMillis() - startTime > timeOutMs) {
// Do something : its to late,cancel the tasks !
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (count == 0) {
taskExecutor.shutdown();
break;
}
}
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
