文档章节

并发编程之Future模式

互联网小龙虾
 互联网小龙虾
发布于 2014/03/11 22:10
字数 230
阅读 451
收藏 2

Future模式的主要使用场景:当前线程需要依赖另一线程的返回数据并且处理数据的线程又相当耗时,那么Future模式就可以使主线程提交数据请求给另一线程后继续处理业务逻辑,等需要时将数据从另一线程返回,很好的利用了等待时间。

举一个能说明问题又简单的例子,本例使用JDK库的Future相关类实现:

package concurrent;

import java.util.concurrent.Callable;

public class DataProcessThread implements Callable<String> {

	@Override
	public String call() throws Exception {
		// TODO Auto-generated method stub
		Thread.sleep(10000);//模拟数据处理
		return "数据返回";
	}

}

package concurrent;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;

public class MainThread {

	public static void main(String[] args) throws InterruptedException,
			ExecutionException {
		// TODO Auto-generated method stub
		DataProcessThread dataProcessThread = new DataProcessThread();
		FutureTask<String> future = new FutureTask<String>(dataProcessThread);

		ExecutorService executor = Executors.newFixedThreadPool(1);
		executor.submit(future);

		Thread.sleep(10000);//模拟继续处理自身其他业务
		while (true) {
			if (future.isDone()) {
				System.out.println(future.get());
				break;
			}
		}
		executor.shutdown();
	}

}


© 著作权归作者所有

共有 人打赏支持
互联网小龙虾
粉丝 5
博文 8
码字总数 2495
作品 0
宁波
私信 提问
《C#并发编程经典实例》学习笔记-第一章并发编程概述

并发编程的术语 并发 同时做多件事情 多线程 并发的一种形式,它采用多个线程来执行程序。 多线程是并发的一种形式,但不是唯一的形式。 并行处理 把正在执行的大量的任务分割成小块,分配给...

repeatedly
08/18
0
0
go语言之并发

简介 多核处理器越来越普及,那有没有一种简单的办法,能够让我们写的软件释放多核的威力?答案是:Yes。随着Golang, Erlang, Scale等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正...

黑神领主
2016/12/10
55
0
并发编程-Future模式

1.Future模式有点类似商品订单。比如在网上进行购物,当看中某一件商品时,就可以提交订单。提交订单完毕在家等候送货上门。卖家根据订单取货、发货,并配送到顾客手中。大部分情况下,卖家处...

cosco
2016/05/02
123
1
Scala实战:并发-Future和Promise

并发编程是很困难的,特别是在你没有很好的设计与抽像你的功能层次时。传统的并发解决方案是采用多线程和共享变量,这使得随着代码的增加你很难找到错误根源。 Scala中采用了更好的方案,它不...

羊八井
2015/12/02
1K
0
Callable与Future

接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果...

colorlesswind
2015/12/24
49
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部