私はループ内のプロセスの試行をループごとに3,000msのスリープで20秒間で60秒に制限しようとしています。 Thread.sleep()を呼び出すことは、実行中のスレッドで実際に実行を一時停止するのではなく、20回の試行がすべて連続して迅速に行われます。Thread.sleep()は実行を一時停止していません
private void pollWebServiceForToken() {
final int pollInterval = 3000;
new Thread() {
@Override
public void run() {
int attempts = 0;
int maxAttempts = 60;
String token;
do {
token = requestToken(exchangeCode);
if (token.contains(FAILED)) {
try {
Thread.sleep(pollingInterval);
} catch (InterruptedException ex) {
this.currentThread().interrupt();
}
}
attempts++;
} while (token.toLowerCase().contains(FAILED) && attempts < maxAttempts && !cancelled);
}
}.start();
}
これは、すべてのVaadinアプリケーションの内部で起こっているので、私は間違ったスレッドがスリープ状態に置かれていると仮定していますが、私は睡眠のための特定のスレッドを対象とするかどうかはわかりません。
ありがとうございます。
InterruptedExceptionは起こっていますか? – Buddy
いいえ、それはほぼすべての20回の試行をほぼ瞬時に実行しています=/ –
'InterruptedException'キャッチハンドラで現在のスレッドを中断する点は正確に何ですか? – EJP