首页>代码>spring线程池ThreadPoolExecutor配置并且得到任务执行的结果>/zuidaima_ThreadPoolTaskExecutor/src/main/java/com/zuidaima/threadpool/StartTaskThread.java
package com.zuidaima.threadpool;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;

import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

public class StartTaskThread implements Runnable {

	private ThreadPoolTaskExecutor threadPoolTaskExecutor;
	private int i;

	public StartTaskThread(ThreadPoolTaskExecutor threadPoolTaskExecutor, int i) {
		this.threadPoolTaskExecutor = threadPoolTaskExecutor;
		this.i = i;
	}

	@Override
	public synchronized void run() {
		String task = "task@ " + i;
		System.out.println("创建任务并提交到线程池中:" + task);
		FutureTask<String> futureTask = new FutureTask<String>(
				new ThreadPoolTask(task));
		threadPoolTaskExecutor.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);
			// 超时后,进行相应处理
		} finally {
			System.out.println("task@" + i + ":result=" + result);
		}

	}
}
最近下载更多
heweimin  LV13 2023年7月27日
2469095052  LV8 2022年5月27日
mylzdy  LV12 2022年5月12日
huasir2018  LV14 2020年5月25日
宇文笑  LV5 2019年8月29日
太阳暖人不暖心  LV7 2019年5月7日
1943815081  LV13 2019年1月2日
zinshao  LV12 2018年11月24日
h895413025  LV1 2018年11月13日
1633788059  LV12 2018年5月25日
最近浏览更多
yyh1252  LV8 2023年11月23日
heweimin  LV13 2023年7月27日
微信网友_15002431817 2023年1月17日
暂无贡献等级
1529860026  LV24 2022年9月5日
mylzdy  LV12 2022年5月12日
1234mama  LV19 2022年3月22日
shaoluyu  LV4 2022年3月18日
2469095052  LV8 2021年12月29日
gaojian0612  LV2 2021年11月23日
随便取个名字_哈哈  LV27 2021年11月7日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友