class Task implements Callable<Integer> {@Overridepublic Integer call() throws Exception {System.out.println("子线程正在计算1-100的结果");Thread.sleep(100);int sum = 0;for (int i = 0; i < 100; i++) {sum += i;}return sum;}}public class FutureTaskDemo {public static void main(String[] args) {Task task = new Task();FutureTask<Integer> integerFutureTask = new FutureTask<>(task);ExecutorService service = Executors.newCachedThreadPool();service.submit(integerFutureTask);try {System.out.println("1-100运行结果:" + integerFutureTask.get());} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}}
转成lamb
public class OneFutureLambda {public static void main(String[] args) throws ExecutionException, InterruptedException {ExecutorService service = Executors.newFixedThreadPool(10);Future<Integer> future = service.submit(new Callable<Integer>() {@Overridepublic Integer call() throws Exception {Integer sum = 0;for (int i = 1; i < 100; i++) {sum += i;}return sum;}});try {System.out.println(future.get());} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}service.shutdown();}}
等价于
Future<Integer> future = service.submit(() -> {Integer sum = 0;for (int i = 1; i < 100; i++) {sum += i;}return sum;});
