java多线程设计模式之订单模式
Java多线程实现订单模式:
客户端线程向服务端发起请求后,请求处理需要较长时间处理,这个时候客户端又需要及时得到一个结果响应,这好比我们去蛋糕店订蛋糕,蛋糕往往需要几个小时才能完成,这个时候店员就会给我一个订单,说过几个小时回来取蛋糕。
摸拟场景,客户端线程向服务端发起请求获取数据内容,数据准备需要很长时间,这个时候我们可以及时返回一个虚拟数据结果,服务器端启动新线程准备数据,一段时间后客户端线程在根据虚拟数据结果来获取真实数据内容。
设计如下:
Main:程序main类,负责发起客户端请求。
Server:服务端类,负责接收请求,创建新线程处理请求。
Data:数据接口,提供获取数据内容接口。
VistualData:虚拟数据类,实现data接口,服务端快速响应的虚拟数据结果,可以获取真实数据内容。
RealData:真实数据类,实现data接口,提供处理数据内容和存储真实数据内容。
实现如下:
Main:main类发出请求
RealData:真实数据类main start...start getData:aend getData:astart getData:bThread-0.start.aend getData:bstart getData:cend getData:cThread-1.start.bThread-2.start.cThread-0 set RealDataThread-0.end.aThread-1 set RealDataThread-1.end.bdata1=aadata2=bbbmian {wait}Thread-2 set RealDataThread-2.end.cdata3=ccccmain end...