1、线程
package com.wyq.thread;
import java.util.Random;
import java.util.concurrent.Callable;
public class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
return "str" + new Random().nextInt(10);
}
}
2、测试类
package com.wyq.thread;
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;
import java.util.concurrent.FutureTask;
public class Test {
public static void main(String[] args) throws Exception, ExecutionException {
//创建一个线程池 ——>线程
ExecutorService pool = Executors.newCachedThreadPool();//可伸缩线程
//创建集合,存任务
List<Future<String>> list = new ArrayList<Future<String>>();
//使用循环创建N多个线程Callale对象
for(int i = 0;i<20;i++){
MyCallable my = new MyCallable();
Future<String> future = pool.submit(my);//实际上是获得了Future的实现类的对象
list.add(future);
}
//遍历
for(Future<String> f: list){
System.out.println(f.get());
}
pool.shutdown();
// //创建任务
// MyCallable my2 = new MyCallable();
// //任务管理器
// FutureTask ft =new FutureTask<>(my2);
// //创建代理类对象
// Thread t = new Thread(ft);//多态,接口做方法的形式参数
//
// System.out.println("任务是否执行完毕:"+ft.isDone());
// t.start();
// System.out.println("获取结果:"+ft.get());
//
// System.out.println("任务是否执行完毕:"+ft.isDone());
}
}