private boolean getNodeReachability(final String ip) {
// TODO Auto-generated method stub
if(!nodeReachabilityStatusMap.containsKey(ip)){
statusAvailable = Boolean.FALSE;
new Thread(){
public void run(){
while(true){
if(nodeReachabilityStatusMap.containsKey(ip)){
statusAvailable = Boolean.TRUE;
notifyAll();
break;
}
}
}
}.start();
while(statusAvailable==Boolean.FALSE){
try{
wait(5000);
}catch(InterruptedException ex){
Log.addInLog(Log.DBG, ex.getMessage());
}
}
}
return nodeReachabilityStatusMap.get(ip);
}
実際getNodeReachability
には、関数はノード アクセス可能または NOT のステータスを返します。これは で維持されておりnodeReachabilityStatusMap
、通知の取得時にコードの他のセクションで更新しています。問題は、通知が遅れている場合、このマップでエントリが見つかるまで待つ必要があることです。だから私は現在のスレッドをチェックして通知している新しいスレッド(関数内)を生成しています。私は同期されたキーワードを使用していません。そのため、どのように動作し、正しい方法でそれを行うか。