并发编程之Future模式
并发编程之Future模式
互联网小龙虾 发表于4年前
并发编程之Future模式
  • 发表于 4年前
  • 阅读 318
  • 收藏 2
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

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();
	}

}


标签: Java 并发 Future
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 8
码字总数 2495
×
互联网小龙虾
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: