package test;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class TestFuture {
public static void main(String[] args) {
ExecutorService threadPool = Executors.newSingleThreadExecutor();
Future<Integer> future = threadPool.submit(new Callable<Integer>() {
public Integer call() throws Exception {
Thread.sleep(5000);
return new Random().nextInt(100);
}
});
try {
System.out.println("before");
System.out.println(future.get());
System.out.println("end");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
future.get() 得到值之前 end 不会打印出来.
future.get() 会阻塞当前线程 ,Thread.sleep(5000) 是为了查看这个效果