转自:JAVA 笔记 Callable 与 FutureTask:有返回值的多线程常用的Thread类在run方法执行完之后是没有返回值的,要实现子线程完成任务后返回值给主线程需要借助第三方转存。Callable接口则提供了一种有返回值的多线程实现方法。下面以一个简单的地主、监工和长工的例子展示这种...
分类:
编程语言 时间:
2015-04-07 19:20:45
阅读次数:
201
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class FutureTaskDemo {
public static voi...
分类:
其他好文 时间:
2015-03-10 12:09:47
阅读次数:
143
在前面写的代码中,所有的任务执行也就执行了,run方法的返回值为空。
这一节我们说的Callable就是一个可以带返回值的线程模型。而它的返回值由Future接着。
先看看Callable
java.util.concurrent Interface Callable接口里面只有一个call方法,参数为空,返回值为T。
首先我们看看javadoc里面 Thread()的构造函数的参数没...
分类:
其他好文 时间:
2015-01-22 00:25:24
阅读次数:
217
ReentrantLock/CountDownLatch/Semaphore/FutureTask/ThreadPoolExecutor的源码中都会包含一个静态的内部类Sync,它继承了AbstractQueuedSynchronizer这个抽象类。AbstractQueuedSynchronize...
分类:
编程语言 时间:
2015-01-06 21:34:55
阅读次数:
334
一、概述
位于java.util.concurrent包下,类声明: public class
FutureTask extends
Object implements
RunnableFuture
可取消的异步计算。利用开始和取消计算的方法、查询计算是否完成的方法和获取计算结果的方法,此类提供了对
Future 的基本实现。仅在计算完成时才能获取结果;如果计算尚未完成,则阻...
分类:
编程语言 时间:
2014-12-23 12:28:08
阅读次数:
193
开发AndroidAPP经常会使用AsyncTask框架来异步加载资源或者异步到服务器拉消息,等任务完成后再主动更新结果到UI主线程,AsyncTask框架可以非常方便的获取线程异步执行结果。Java5之前,Java并没有提供API用于查询线程是否执行完毕以及如何获取线程执行的结果;Java5之后版本提..
分类:
其他好文 时间:
2014-11-14 18:04:57
阅读次数:
249
Executor和ExecutorService、Executors类方便创建线程池、Callable和Runnable、Future和FutureTask,以及Executor相关类的结构...
分类:
其他好文 时间:
2014-11-03 16:26:56
阅读次数:
273
MainActivity如下:
package cc.cv;
import java.util.concurrent.FutureTask;
import android.os.Bundle;
import android.app.Activity;
/**
* Demo描述:
* FutureTask使用完整示例
*
* FutureTask是一个Runnable的子类,在建立Th...
分类:
其他好文 时间:
2014-11-03 13:04:30
阅读次数:
130
MainActivity如下:
package cc.vv;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.E...
分类:
移动开发 时间:
2014-11-03 13:04:13
阅读次数:
184
Callable方法比Runnable强大一些在于它被线程执行后有返回值,该返回值可以被Future拿到。用法:Callable<Integer>callable=newCallable<Integer>(){publicIntegercall()throwsException{//dosth}};FutureTask<Integer>future=newFutureTask<Integer>(..
分类:
其他好文 时间:
2014-11-01 19:17:29
阅读次数:
175