1. 程式人生 > >java 給任務傳遞引數

java 給任務傳遞引數

之前https://www.cnblogs.com/kexb/p/10228369.html沒有引數,這裡介紹引數什麼傳入
package com.hra.riskprice;

import com.hra.riskprice.SysEnum.Factor_Type;
import com.hra.riskprice.pojo.RskFactor;
import com.hra.riskprice.service.impl.RskFactorBulkMapper;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.
*; import java.util.concurrent.*; @SpringBootApplication public class RiskpriceApplication { public static void main(String[] args) throws InterruptedException, ExecutionException{ new RiskpriceApplication().exec(); } void exec() throws InterruptedException, ExecutionException {
//進行非同步任務列表 List<FutureTask<Integer>> futureTasks = new ArrayList<FutureTask<Integer>>(); //執行緒池 初始化十個執行緒 和JDBC連線池是一個意思 實現重用 ExecutorService executorService = Executors.newFixedThreadPool(10); long start = System.currentTimeMillis(); int jj=0
; //類似與run方法的實現 Callable是一個介面,在call中手寫邏輯程式碼 for(int i=0;i<10;i++){ cccc c1=new cccc(); c1.setIndex(i); FutureTask<Integer> futureTask = new FutureTask<Integer>(c1); futureTasks.add(futureTask); //提交非同步任務到執行緒池,讓執行緒池管理任務 特爽把。 //由於是非同步並行任務,所以這裡並不會阻塞 executorService.submit(futureTask); } int count = 0; for (FutureTask<Integer> futureTask : futureTasks) { //futureTask.get() 得到我們想要的結果 //該方法有一個過載get(long timeout, TimeUnit unit) 第一個引數為最大等待時間,第二個為時間的單位 count+= futureTask.get(); } long end = System.currentTimeMillis(); System.out.println("執行緒池的任務全部完成:結果為:"+count+",main執行緒關閉,進行執行緒的清理"); System.out.println("使用時間:"+(end-start)+"ms"); //清理執行緒池 executorService.shutdown(); } private int arg; class cccc implements Callable<Integer>{ private int index; public int getIndex(){ return index; } public void setIndex(int i){ this.index=i; } @Override public Integer call() throws Exception { System.out.println("任務執行 is "+index+""); Integer res = new Random().nextInt(100); Thread.sleep(1000); System.out.println("任務執行:獲取到結果 :"+res); return res; } } }