现在,我有一段代码联系另一台服务器,询问项目是否在列表中,并根据返回值返回一个布尔值。
代码如下:
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 是否在列表中,则该其他服务器会响应当前服务器。