并行JAVA程序设计模式Future模式

 
package future;

public class Client {

	public Data request(final String queryStr) {

		final FutureData future = new FutureData();

		new Thread() {

			public void run() {

				RealData realdata = new RealData(queryStr);//真正的处理数据
				future.setRealData(realdata);//添加真数据
			}

		}.start();

		return future;
	}
}

package future;

public interface Data {

	public String getResult();
	
}
package future;


public class FutureData implements Data {


<span style="white-space:pre">	</span>protected RealData realdata = null;
<span style="white-space:pre">	</span>protected boolean isReady = false;


<span style="white-space:pre">	</span>public synchronized void setRealData(RealData realdata) {


<span style="white-space:pre">		</span>if (isReady) {
<span style="white-space:pre">			</span>return;
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>this.realdata = realdata;
<span style="white-space:pre">		</span>isReady = true;
<span style="white-space:pre">		</span>notifyAll();//处理完毕,等待结束
<span style="white-space:pre">	</span>}


<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>public synchronized String getResult() {
<span style="white-space:pre">		</span>while (!isReady) {//如果isReady为false则 继续等待


<span style="white-space:pre">			</span>try {
<span style="white-space:pre">				</span>wait();
<span style="white-space:pre">			</span>} catch (InterruptedException e) {


<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}


<span style="white-space:pre">		</span>return realdata.result;
<span style="white-space:pre">	</span>}


}


package future;

public class RealData implements Data {

	protected final String result;

	public RealData(String para) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < 10; i++) {
			sb.append(para+i);
			try {
				System.out.println("处理中"+i);
				Thread.sleep(100);

			} catch (InterruptedException e) {

			}
		}
		result = sb.toString();
	}

	@Override
	public String getResult() {
		return result;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值