線程類,執行的任務:
package com.yonyou.sci.gateway.exec; import java.util.concurrent.Callable; public class CallableTask<I extends Number> implements Callable<Integer> { private Integer num; public CallableTask () {} // 使用構造方式接收參數 public CallableTask(Integer num){ this.num = num; } @Override public Integer call () { Integer count = 0; for (int i = 1; i <= num;i++) { // 根據傳入的參數,迭代相加 count = count + i; } return count; } }
使用線程池方式執行上面的任務:
package com.yonyou.sci.gateway.exec; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; /** * 使用線程池實現並行計算 */ public class TaskMain { public static void main (String[] args) throws Exception{ // 創建一個固定長度線程池 ExecutorService es = Executors.newFixedThreadPool(2); // 使用線程池方式、執行線程子類 Future<Integer> r1 = es.submit(new CallableTask<Integer>(100)); Future<Integer> r2 = es.submit(new CallableTask<Integer>(200)); // 獲取到計算的結果並打印出來 System.out.println(r1.get()); System.out.println(r2.get()); // 關閉線程池 es.shutdown(); } }