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);
}
}
}