package com.david.daviddemo.jdk.util.concurrent;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
public class FutureDemo {
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService executorService = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue());
List<Future<String>> futureList = new ArrayList<>();
String[] names = {"Mary", "Jack", "BaBa Sheep"};
int length = names.length;
for(int i =0; i < length; i++) {
MyFutureTask myFutureTask1 = new MyFutureTask(names[i]);
Future<String> future = executorService.submit(myFutureTask1);
futureList.add(future);
}
List<String> resultList = new ArrayList<>();
for(int i =0; i < futureList.size(); i++) {
resultList.add(futureList.get(i).get());
}
for (String result : resultList) {
System.out.println(result);
}
}
}
异步任务
package com.david.daviddemo.jdk.util.concurrent;
import java.util.concurrent.Callable;
public class MyFutureTask implements Callable<String>{
private String name;
public MyFutureTask(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String call() throws Exception {
Thread.sleep(1000);
String sayHello = "Hello " + name;
return sayHello;
}
}