第一种方案:简单、常用
//newFixedThreadPool(20)创建可用线程数
ExecutorService executorServices = Executors.newFixedThreadPool(20);
System.out.println(" START ......");
for (int i = 0; i < 10; i ++) {
executorServices.submit(new Runnable() {
public void run() {
//逻辑内容
}
});
}
// 工作已经安排下去了,安心等待就好了
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} executorService.shutdownNow();
System.out.println(" END ......");
第二种方案:简单、清晰
//实例化一个Callable集合,add需要并发的方法
//newFixedThreadPool(20)创建可用线程数
ExecutorService executorService = Executors.newFixedThreadPool(20);
Set<Callable<String>> callables = new HashSet<Callable<String>>();
callables.add(new Callable<String>() {
@Override
public String call() throws Exception {
return "Task1....";
}
});
callables.add(new Callable<String>() {
@Override
public String call() throws Exception {
return "Task2....";
}
});
//执行全部
executorService.invokeAll(callables);
//执行单个
String result = executorService.invokeAny(callables);
System.out.println("result = " + result);
executorService.shutdownNow();