//ResultLock 存放请求ID与对应的返回结果
public class ResultLock {
private String id;
public ResultLock(String id)
{
this.id=id;
}
private Object message;
public Object getMessage() {
return message;
}
public void setMessage(Object message) {
this.message = message;
}
}
发送请求
session.write(request);//mina发送消息
ResultLock r=new ResultLock(request.getMessageID());
LockMap.store(request.getMessageID(), r);//此对象放到一个map
try
{
synchronized (r) {
r.wait(milliseconds);
}
}
catch(Exception ee)
{
throw ee;
}
finally
{
LockMap.remove(request.getMessageID());
}
return r.getMessage();//取到结果
--------------------
在messageReceived方法,即收到返回消息刻唤醒
ResultLock lock=LockMap.pick(resp.getReqMessageID());
if(lock!=null)
{
synchronized (lock) {
lock.notify();
lock.setMessage(结果值);//
}
}
转自:http://www.iteye.com/topic/1121911