现在,我有一段代码联系另一个服务器,询问某个项目是否在列表中,并根据返回的值返回布尔值。在Java内返回之前等待
的代码都像这样:
public boolean checkIfOnline(int accountId) {
//First loop is incase if someone is already checking. Second is for the checking that this account is doing.
while (isCheckingIfOnline) {
try {
Thread.sleep(1);
} catch (InterruptedException ex) {
}
}
isCheckingIfOnline = true;
sendCheckIfOnline(accountId);
while (isCheckingIfOnline) {
try {
Thread.sleep(1);
} catch (InterruptedException ex) {
}
}
return onlineResponse;
}
的onlineResponse和isCheckingIfOnline是处理其他的什么服务器返回的方法中改变,这是我扔在一起让系统等待的方法另一台服务器进行响应。显然,这是非常有缺陷的,因为当这个方法经常被调用时,它会减慢系统,因为它一次只允许一个查询,当它允许多个查询同时执行时。
我可以使用什么其他方法来实现上述代码的功能,但允许多个查询同时运行?
编辑:为了进一步说明,checkIfOnline获取一个帐户ID,并询问另一个服务器是否该帐户ID位于列表中,如果帐户ID是或不在列表中,则该其他服务器对当前服务器作出响应。
我想你想使用一个ExecutionService并提交“checkIfOnline”任务到它。它负责调度和等待,然后您可以配置适合您的应用程序的并发级别。 – Thilo 2012-08-09 04:54:22
如果没有sendCheckIfOnline正在做什么的更多细节,很难提供建议。 – Tom 2012-08-09 04:59:18
超前,澄清更多的汤姆。 – PuppyKevin 2012-08-09 05:18:52