>submit(Runnable task);// 提交Callable任务<T>Future<T>submit(Callable<T>task);// 提交Runnable任务及结果引用<T>Future<T>submit(Runnable task,Tresult); 他们的返回值都是Future接口,一共有 5 个方法,取消任务的方法 cancel()、判断任务是否已取消的方法 isCancelled()、判断任务是否已结束的方法 isDone(...
实际上submit方法就是使用的Future模式: task taskresult task } Future<?> submit(Runnable task) : 它的返回值实际上是Future<Void>,子线程是不会返回数据的。 <T> Future<T> submit(Runnable task, T result) : 这个方法是不是很蛋疼,返回的结果在调用的时候已经给出了。如果我一开始就知道结果那我为什么...
Futuresubmit(Callable task);Future submit(Runnable task, T result); Future submit(Runnable task); 1. 2. 这个方法接收两种参数,Callable和Runnable。返回值是Future。 下面具体看一下这些是什么东西。 Callable和Runnable 先看一下两个接口的定义: Callable public interface Callable { V call() throws Excepti...
> submit(Runnable task);// 提交Callable任务<T> Future<T> submit(Callable<T> task);// 提交Runnable任务及结果引用<T> Future<T> submit(Runnable task, T result); 1. 他们的返回值都是Future接口,一共有 5 个方法,取消任务的方法 cancel()、判断任务是否已取消的方法 isCancelled()、判断任务是否已...
1 2 3 <T> Future<T> submit(Callable<T> task); <T> Future<T> submit(Runnable task, T result); Future<?> submit(Runnable task);第一个submit方法里面的参数类型就是Callable。暂时只需要知道Callable一般是和ExecutorService配合来使用的,具体的使用方法讲在后面讲述。
这还有个<T> Future<T> submit(Runnable task, T result);你可能会奇怪这有啥用啊,你传入一个result,Future.get的时候返回的不还是这个result嘛。是个没错,但是这样用就行了! 这样就可以得到修改后的结果了! 总结 综上所述,知道了Runnable 和Callable 的区别,Callable 可以获得任务结果和抛出异常,Runnable 没...
*/public<T>Future<T>submit(Runnable task,Tresult){if(task==null)thrownewNullPointerException();RunnableFuture<T>ftask=newTaskFor(task,result);execute(ftask);returnftask;} 代码中引用最终都指向了RunableFuture先前我们也发现了此接口是继承了Future和Runable接口的,所以它也可以指向Future引用;其实最终得...
*/<T>Future<T>submit(Callable<T>task);/** *提交一个Runnable的任务,当任务完成后,可以通过Future.get()获取的是提交时传递的参数T result * */<T>Future<T>submit(Runnable task,T result);/** * 提交一个Runnable的人无语,它的Future.get()得不到任何内容,它返回值总是Null。
31 FutureTask<Integer> futureTask = new FutureTask<Integer>(new CallableTask(i+1)); 32 //提交任务,添加返回,Runnable特性 33 exs.submit(futureTask); 34 //Future特性 35 futureList.add(futureTask); 36 } 37 Long getResultStart = System.currentTimeMillis(); ...
整个使用过程非常简单,下面我们来分析一下executor.submit()里面究竟发生了什么: public <T> Future<T> submit(Callable<T> task) { if (task == null) throw new NullPointerException(); // 根据Callable对象,创建一个RunnableFuture,这里其实就是FutureTask ...