通过直接继承Thread, 实现Runnable接口来创建线程。但这两种方式都有一种缺陷:在执行完任务之后无法获得执行结果。 如果需要获得执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来比较麻烦,而jdk中Callable和Future,通过他们可以在任务执行完毕...
分类:
其他好文 时间:
2015-06-30 08:58:55
阅读次数:
170
Java中存在Runnable、Callable、Future、FutureTask这几个与线程相关的类或者接口,在Java中也是比较重要的几个概念,我们通过下面的简单示例来了解一下它们的作用于区别。Runnable其中Runnable应该是我们最熟悉的接口,它只有一个run()函数,用于将耗时操作...
分类:
编程语言 时间:
2015-06-24 09:14:39
阅读次数:
206
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。
这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。
如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。
而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务...
分类:
编程语言 时间:
2015-06-01 13:20:53
阅读次数:
206
publicclassMain{publicstaticclassMyCallableimplementsCallable<Integer>{publicIntegercall()throwsException{return1;}}publicstaticvoidmain(String[]args){MyCallablecallable=newMyCallable();FutureTask<Integer>task=newFutureTask<Integer>(callab..
分类:
编程语言 时间:
2015-05-15 15:56:55
阅读次数:
138
引子
随着项目的发展,activity的代码变得越来越庞杂,不易维护。这便出现了诸如MVP等模式来分层实现以达到给activity减负的效果,从而降低业务逻辑的耦合,提高可维护性。本文从另外一个角度出发,利用命令模式来实现给activity瘦身的目标。采用本文的方案,同样可以将业务逻辑抽离,并于后台执行,同时提供了不错的取消机制。
接口
iCmd接口,主要api是exe方法,返回值是bundle对象...
分类:
其他好文 时间:
2015-05-12 09:35:29
阅读次数:
140
首先介绍Callable这个接口,它仅包含一个方法call,它是类似于Runnable接口,是Future并发设计模式下实际的任务执行单元,它能返回一个对象。我们可以实现它的子类并使用Future对象来提交它。现在我们再来看看Futrue,futrue提供了get方法来返回计算结果,cancel来中断任务。Future还会进一步被封装成FutureTask等任务类,这些任务会被提交给Executo...
分类:
编程语言 时间:
2015-05-11 01:26:37
阅读次数:
185
1.1 综述 ????创建线程有两种方式:extends Thread || inplements Runable,但是这两种方式都有一个缺陷,就是执行完任务后不能获取执行结果。 ????如果非要获取到执行结果的话,就必须通过共享变量或者是...
分类:
编程语言 时间:
2015-05-05 12:51:42
阅读次数:
164
demo1: 使用FutureTask和Callable,获取一个线程的返回值。在获取返回值前可以做其他事,在Future.get()时阻塞,也可调用
get(long timeout, TimeUnit unit)方法设置在等待long时间后如果还没有返回值抛出异常。
package com.lipeng;
import java.util.concurrent.Callable;
i...
分类:
编程语言 时间:
2015-04-29 00:43:25
阅读次数:
140
java多线程如何应用呢,几乎学java的同学都知道Thread类和Runable接口。继承Thread类或者实现Runable接口,调用thread的start方法即可启动线程。 然后是线程池,就是启动一系列的线程,当需要启动某个线程时,从线程池中拿取一个线程。 最近使用到需要启动一个线程进行复....
分类:
编程语言 时间:
2015-04-20 18:14:40
阅读次数:
196
1、Runnable和Callable的区别是:
(1)Callable规定的方法是call(),Runnable规定的方法是run().
(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得
(3)call方法可以抛出异常,run方法不可以
(4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待...
分类:
其他好文 时间:
2015-04-17 11:27:40
阅读次数:
132