有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案