get方法会阻塞当前线程,直到计算任务完成并返回结果。如果计算任务抛出异常,get方法会将异常重新抛出。 下面是一个使用get方法获取计算结果的示例代码: publicclassMain{publicstaticvoidmain(String[]args){ExecutorServiceexecutorService=Executors.newSingleThreadExecutor();CalculationTasktask=newCalculationTask(10,20);Fut...
下面我们通过一个简单的示例来演示get()方法的用法。 importjava.util.concurrent.*;publicclassFutureExample{publicstaticvoidmain(String[]args){ExecutorServiceexecutor=Executors.newFixedThreadPool(1);Future<Integer>future=executor.submit(()->{Thread.sleep(2000);return42;});try{System.out.println("Waiting ...
main获取的结果 -- startpool-1-thread-1,执行 demo -- startException in thread "main" java.util.concurrent.TimeoutException at java.util.concurrent.FutureTask.get(FutureTask.java:205) at basic.thread.FutureDemo.main(FutureDemo.java:20)pool-1-thread-1,执行 demo -- end 我们可以发现:当前线程会...
1、返回值类型不同: submit() 方法返回一个 Future 对象,可以用来获取任务的执行结果或者取消任务的执行;而 execute() 方法没有返回值,无法获取任务的执行结果。 2、异常处理不同: submit() 方法能够捕获任务执行过程中抛出的异常,将异常封装到 Future 对象中,通过调用 get() 方法或者 get(long, TimeUnit) 方...
一种代码示例是使用ExecutorService类的submit()方法提交多个Callable任务,并返回多个Future对象, 然后在主线程中循环调用Future对象的get()方法获取结果,并进行汇总1。 代码如下:importjava.math.BigDecimal;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.Callable;importjava.util.concurrent.Exe...
我们发现它们的返回值都是 Future 接口。 Future 接口有 5 个方法: •取消任务的方法 cancel()•判断任务是否已取消的方法 isCancelled()•判断任务是否已结束的方法 isDone()•获得任务执行结果的 get() 和 get(timeout, unit),其中最后一个 get(timeout, unit) 支持超时机制。
工作中,很多人会使用线程池的submit方法 获取 Future 类型的返回值,然后使用java.util.concurrent.Future#get(long, java.util.concurrent.TimeUnit)实现“最多等多久”的效果。 但很多人对此的理解只停留在表面上,稍微问深一点点可能就懵逼了。 比如,java.util.concurrent.Future#get(long, java.util.concurrent.Ti...
Callable:是一个接口,定义了任务的执行方法 call(),返回任务的结果。 Future:也是一个接口,表示异步计算的结果,通过 get() 方法获取结果。 FutureTask:是 Callable 和 Future 的实现,既可以作为任务执行,又可以获取任务结果。 2、联系 Callable 用于定义任务,Future 用于获取任务的结果,而 FutureTask 将二者结合起来...
无法完成 Future 时我们只能尝试取消任务 Future 接口中的 get() 方法是一个阻塞操作 Future 不支持异常处理 多个Future异步任务不能连接传递 Java 8 中引入 CompletableFuture ,是 Future 接口的一种实现,可以传入回调对象,属于 java.util.concurrent package。当异步任务完成或者发生异常时,CompletableFuture 自动调用回...