package com.gyee.datatraining.task; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; import java.util.concurrent.FutureTask; import java.util.concurrent.TimeUnit; import com.gyee.datatraining.model.auto.Windpowerstation; import com.gyee.datatraining.model.auto.Windturbine; import com.gyee.datatraining.util.dd.LstmModelWt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; public class StartTaskThread4 implements Runnable { private Logger logger = LoggerFactory.getLogger(this.getClass()); private Executor executor; private int i; private LstmModelWt lstmModelWt; private List wtls; private Windpowerstation wp; public StartTaskThread4(Executor executor, int i, List wtls, Windpowerstation wp, LstmModelWt lstmModelWt) { this.executor = executor; this.i = i; this.wtls = wtls; this.wp = wp; this.lstmModelWt = lstmModelWt; } @Override public synchronized void run() { String task = "task@ " + wp.getId(); logger.info("风机未来7天数据创建任务并提交到线程池中:" + wp.getId()); FutureTask futureTask = new FutureTask(new ThreadPoolTask4(task, wtls,wp, lstmModelWt)); executor.execute(futureTask); // 在这里可以做别的任何事情 String result = null; try { // 取得结果,同时设置超时执行时间为1秒。同样可以用future.get(),不设置执行超时时间取得结果 result = futureTask.get(1000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { futureTask.cancel(true); } catch (ExecutionException e) { futureTask.cancel(true); } catch (Exception e) { futureTask.cancel(true); // 超时后,进行相应处理 } } }