2
我試圖通過20次嘗試每循環睡眠3000毫秒來限制循環中進程的嘗試到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 catch接口處理程序中中斷當前線程究竟是什麼? – EJP