小知识点-第七讲

多线程常用设计----Future模式

通过异步调用方式:服务程序不等数据处理完成便立刻返回给客户端一个伪装的数据,客户端拿到这个结果后,不急于进行处理,而去调用了其他的业务处理逻辑,充分利用等待时间,处理完其他的业务逻辑之后,在处理返回结果比较慢的future数据进行处理。整个过程调用中不存在无谓的等待,从而提高了系统的响应速度。

这个在android手机开发中太常用了。

jdk内置的future模式功能强大,除了基本功能外,他还可以取消future任务,或者设置future任务的超时时间,很强。

jdk:

FutureTask future = new FutureTask《String》(new RealData("aaa"));

//RealData implements Callable 接口

ExecutorService ex = Executors.newFixedThreadPool(1);

ex.submit(future);

// 处理其他的

String reult = future.get();// 获取真实的处理结果。

简单实现代码段:

public class A {

public Data request(final String params) {

final FutureData future = new FutureData();

new Thread(){

public void run(){

RealData dd = new RealData();

future.setRealData(dd);

}

}.start();

returen future;

}

public class FutureData implements Daata{

protected Data realData = null;

protected boolean iReady = false;

public synchronized  void setRealData(Data data){

if(iReady){

return;

}

this.realData = data;

iReady = true;

notifyAll();

}

public synchronized String getResult(){

while(!iReady){

try{

wait();

}catch(Exception ex){}

}

return data.getReult();

}

}

}

猜你喜欢

转载自mojianpo.iteye.com/blog/1849938