我有一个从数据库加载的对象Feed列表,然后我使用这些对象通过属性UrlFeed访问互联网并做一些工作来从每个Feed获取项目,问题是我使用一个线程并输出时间取决于List的大小,因此如果列表变大,输出时间将增加。我想使用多个线程并减少此输出时间。我想知道如何将此任务划分为多个线程,或者如何减少输出时间?
我使用Spring Boot并与ScheduledTaskRegistrar一起定期安排任务 这是我的配置类:
@SpringBootApplication
@EnableScheduling
public class MyApp implements SchedulingConfigurer {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
@AutoWired
TaskConfig tC;
@Bean(destroyMethod = "shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(20);
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
taskRegistrar.addTriggerTask(
new Runnable() {
@Override
public void run() {
for(Feed f : getListFeed()){
accessToFeedAndDoSomeWork(f.getUrlFeed);
}
}
},
new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
Calendar nextExecutionTime = new GregorianCalendar();
Date lastActualExecutionTime = triggerContext.lastActualExecutionTime();
nextExecutionTime.setTime(lastActualExecutionTime != null ? lastActualExecutionTime : new Date());
nextExecutionTime.add(Calendar.MILLISECOND, tC.getRate);
return nextExecutionTime.getTime();
}
});
}
}
是否有ScheduledTaskRegistrar的解决方案,感谢您的帮助