1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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<Windturbine> wtls;
- private Windpowerstation wp;
- public StartTaskThread4(Executor executor, int i, List<Windturbine> 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<String> futureTask = new FutureTask<String>(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);
- // 超时后,进行相应处理
- }
- }
- }
|