Future模式在jdk5中有实现
其特点是:不阻塞等待函数的执行结果,而是立即返回一个Future对象,Future对象就像一个提货单,等函数执行完成再去提货
核心类是 Host 和 FutureData
public class Main {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
Host host = new Host();
Data f1 = host.request(5, 'c');
Data f2 = host.request(5, 'd');
Data f3 = host.request(5, 'e');
Thread.sleep(2000);
System.out.println(f1.getData());
}
}
package com.justel.fs.future;
public class FutureData implements Data{
private boolean ready = false; //readData是否已经完成
private RealData realData;
@Override
public synchronized String getData() {
while(!ready){
try {
wait();
} catch (InterruptedException e) {
}
}
return realData.getData();
}
public RealData getRealData() {
return realData;
}
public synchronized void setRealData(RealData realData) {
if(ready) return;
this.realData = realData;
ready = true;
notifyAll();
}
}
package com.justel.fs.future;
public class RealData implements Data{
private int n;
private char c;
public RealData(int n, char c){
this.n = n;
this.c = c;
}
@Override
public String getData() {
String string = "";
try {
for (int i = 0; i < n; i++) {
string += c;
Thread.sleep(1000);
}
} catch (InterruptedException e) {
}
return string;
}
}
package com.justel.fs.future;
public class Host {
public Data request(final int n, final char c){
final FutureData futureData = new FutureData();
new Thread(){
public void run(){
RealData realData = new RealData(n, c);
futureData.setRealData(realData);
}
}.start();
return futureData;
}
}
分享到:
相关推荐
c++11多线程编程库中的future库的使用实例,供多线程编程参考学习
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
Java多线程之异步Future机制的原理和实现共5页.pdf.zip
多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中在代码的重要部分加上标注使读者更加容易...
主要为大家详细介绍了Java多线程之异步Future机制的原理和实现,感兴趣的小伙伴们可以参考一下
Java多线程设计模式 清晰完整PDF版 Java多线程设计模式源代码
(注意,本资源附带书中源代码可供参考) 多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中...
多线程模式高清版+DEMO,多线程模式高清版+DEMO多线程模式高清版+DEMO
本资源描述了C++11 中多线程的创建,C++11中std命名空间中将boost库中的Thread加入,boost多线程从准标准变为标准,其中还介绍了C++ 多线程下的单例模式的使用,本文档为txt文档
NetMQ例子,多线程模式,推拉模式,订阅模式等
java多线程设计模式.pdf java多线程设计模式.pd
vc++6.0 编写socket多线程例程,非阻塞模式,客户端 服务器端源代码,可运行
Java多线程设计模式源代码
图解 java多线程设计模式 源码(自己写的)
c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程...
C#多线程之如何弹出一个模式窗口来显示进度条 学习版
多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程