public interface Executor { void execute(Runnable command); } 1. 2. 这个方法是没有返回值的,而且只接受Runnable。 那么像得到线程的返回值怎嘛办呢? 在ExecutorService接口中能找到这个方法: Futuresubmit(Callable task);Future submit(Runnable task, T result); Future submit(Runnable task); 1. 2. 这个...
java复制代码 public interface ExecutorService extends Executor { // 提交Callable任务并返回任务的Future Future submit(Callable task); // 从返回的Future中获取到执行结果为result Future submit(Runnable task, T result); // 从返回的Future中获取到执行结果为null Future submit(Runnable task); } Future 相关...
提交Runnable 任务submit(Runnable task):这个方法的参数是一个 Runnable 接口,Runnable 接口的 run()方法是没有返回值的,所以submit(Runnable task)这个方法返回的 Future 仅可以用来断言任务已经结束了,类似于Thread.join()。 提交Callable 任务submit(Callable task):这个方法的参数是一个Callable接口,它只有一个call...
> submit(Runnable task); 第一个方法:submit提交一个实现Callable接口的任务,并且返回封装了异步计算结果的Future。 第二个方法:submit提交一个实现Runnable接口的任务,并且指定了在调用Future的get方法时返回的result对象。 第三个方法:submit提交一个实现Runnable接口的任务,并且返回封装了异步计算结果的Future。 因此我...
task是Callable的情况 task是Runnable 的情况 看了源码就揭开了神秘面纱了,就是因为Future需要返回结果,所以内部task必须是Callable,如果task是Runnable 我就造个假,偷天换日,在Runnable 外面包个Callable马甲,返回的结果在构造时就写好。 如果是调用Future<?> submit(Runnable task);提交任务,构造的时候就直接是Runnabl...
而submit方法是ExecutorService中定义的,它们都会返回一个Future对象。实际上submit方法就是使用的Future模式: task taskresult task } Future<?> submit(Runnable task) : 它的返回值实际上是Future<Void>,子线程是不会返回数据的。 <T> Future<T> submit(Runnable task, T result) : ...
而submit方法是ExecutorService中定义的,它们都会返回一个Future对象。实际上submit方法就是使用的Future模式: publicinterfaceExecutorServiceextendsExecutor{...<T>Future<T>submit(Callable<T>task);<T>Future<T>submit(Runnabletask,Tresult);Future<?>submit(Runnabletask);...} ...
supplyAsync表示创建带返回值的异步任务的,相当于ExecutorService submit(Callable<T> task) 方法,runAsync表示创建无返回值的异步任务,相当于ExecutorService submit(Runnable task)方法,这两方法的效果跟submit是一样的,测试用例如下: @Test public void test2() throws Exception { ...
要并行或异步运行某些东西,我可以使用 ExecutorService: <T> Future<T> submit(Runnable task, T result); 或 CompletableFuture Api: static <U> CompletableFuture<U> supplyAsync(...
*/Future<?>submit(Runnable task);/** * 执行一组给定的Callable任务,返回对应的Future列表。列表中每一个Future都将持有该任务的结果和状态。 * 当所有任务执行完毕后,方法返回,此时并且每一个Future的isDone()方法都是true。 * 完成的任务可能是正常结束,也可以是异常结束 ...