小知识点-第七讲

多线程常用设计----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();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值