我們可以使用在jdk1.5加入到J.U.C的Callable升略,F(xiàn)uture實(shí)現(xiàn)
代碼
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.*;
public class Call {
public static void main(String[] args) {
call();
}
private static void call() {
List<Callable<String>> callables = new ArrayList<>();
for (int i = 0; i < 10; i++) {
callables.add(new Callable<String>() {
@Override
public String call() throws Exception {
return "線程" + Thread.currentThread().getName() + "返回" + UUID.randomUUID();
}
});
//創(chuàng)建線程池
ExecutorService pool = Executors.newFixedThreadPool(10);
try {
List<Future<String>> list = pool.invokeAll(callables);
for (int j = 0; j < list.size(); j++) {
Future<String> future = list.get(j);
if (future.isDone()) {
System.out.println("執(zhí)行結(jié)果:" + future.get());
}
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} finally {
pool.shutdown();
}
}
}
}