import java.util.concurrent.Callable;
public class RandomCallable implements Callable<Integer>{
@Override
public Integer call() throws Exception {
return (int)(Math.random()*200);
}
}
package com.pool;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class CallablePool {
public static void main(String[] args) throws InterruptedException, ExecutionException {
//創建一個線程池
ExecutorService pool = Executors.newCachedThreadPool();
//創建list集合來存放線程運行結果
List<Future> al = new ArrayList<Future>();
for(int i=0;i<20;i++) {
//創建一個實現Callable接口的類的對象
RandomCallable task = new RandomCallable();
//使用線程池創建線程運行線程
Future<Integer> submit = pool.submit(task);
//把運行結果放到list集合中
al.add(submit);
}
pool.shutdown();
//遍歷線程執行結果
for(Future f:al) {
System.out.println(f.get());
}
}
}
第二種方式
package com.pool;
public class RunThread implements Runnable{
@Override
public void run() {
System.out.println((int)(Math.random()*100));
}
}
package com.pool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class RunPool {
public static void main(String[] args) {
//創建線程池
ExecutorService pool = Executors.newCachedThreadPool();
for(int i=0;i<20;i++) {
RunThread task = new RunThread();
//使用線程池創建線程並執行
pool.submit(task);
}
}
}