TimerTask Spring启动中的java TaskExecutor
我试图在一个Spring引导应用程序中,在TimerTask内创建一个runnable。TimerTask每5秒运行一次,它获取不断更新的数据并将其存储到结果中。在TimerTask中,我需要处理这些数据,但这需要5秒以上(通常大约一分钟)。我想把这个较长的任务放在另一个线程中,将其分开
总的要点如下:
Spring启动组件:
@Component
public class dbUpdateScheduler {
Timer timer = new Timer(true);
long periodInMs = 10000;
UpdateDB mytask = new UpdateDB(dBaccessor);
timer.scheduleAtFixedRate(mytask , periodInMs, periodInMs);
}
TimerTask:
public class UpdateDB extends TimerTask {
private final DBaccessor dBaccessor;
@Autowired
private TaskExecutor taskExecutor;
UpdateDB(DBaccessor dBaccessor) {
this.dBAccessor = dBaccessor;
}
@Override
public void run() {
Iterable <Document> results = this.dBAccessor.getstuff();
ExtraTask extratask = new ExtraTask(results);
taskExecutor.execute(extratask); //failing here
}
}
额外任务。爪哇:
@Configurable
public class ExtraTask implements Runnable {
@Autowired
private Iterable <Document> results;
ExtraTask(Iterable <Document> results) {
this.results = results;
}
@Override
public void run() {
//proccess stuff
}
}
不确定如何继续,我在taskExecutor的执行行中得到一个nullPointerException。一个可能的解决方案是否包括自动连接结果和注入到ExtraTask中
共 (0) 个答案