StartTaskThread4.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.gyee.datatraining.task;
  2. import java.util.List;
  3. import java.util.concurrent.ExecutionException;
  4. import java.util.concurrent.Executor;
  5. import java.util.concurrent.FutureTask;
  6. import java.util.concurrent.TimeUnit;
  7. import com.gyee.datatraining.model.auto.Windpowerstation;
  8. import com.gyee.datatraining.model.auto.Windturbine;
  9. import com.gyee.datatraining.util.dd.LstmModelWt;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  13. public class StartTaskThread4 implements Runnable {
  14. private Logger logger = LoggerFactory.getLogger(this.getClass());
  15. private Executor executor;
  16. private int i;
  17. private LstmModelWt lstmModelWt;
  18. private List<Windturbine> wtls;
  19. private Windpowerstation wp;
  20. public StartTaskThread4(Executor executor, int i, List<Windturbine> wtls, Windpowerstation wp, LstmModelWt lstmModelWt) {
  21. this.executor = executor;
  22. this.i = i;
  23. this.wtls = wtls;
  24. this.wp = wp;
  25. this.lstmModelWt = lstmModelWt;
  26. }
  27. @Override
  28. public synchronized void run() {
  29. String task = "task@ " + wp.getId();
  30. logger.info("风机未来7天数据创建任务并提交到线程池中:" + wp.getId());
  31. FutureTask<String> futureTask = new FutureTask<String>(new ThreadPoolTask4(task, wtls,wp, lstmModelWt));
  32. executor.execute(futureTask);
  33. // 在这里可以做别的任何事情
  34. String result = null;
  35. try {
  36. // 取得结果,同时设置超时执行时间为1秒。同样可以用future.get(),不设置执行超时时间取得结果
  37. result = futureTask.get(1000, TimeUnit.MILLISECONDS);
  38. } catch (InterruptedException e) {
  39. futureTask.cancel(true);
  40. } catch (ExecutionException e) {
  41. futureTask.cancel(true);
  42. } catch (Exception e) {
  43. futureTask.cancel(true);
  44. // 超时后,进行相应处理
  45. }
  46. }
  47. }