我有一個線程運行,不斷更新我的laskAck變量。我將目標設定爲非常大,以便我的線程有機會更新laskAck變量。當我調試我的代碼並逐步運行時,它可以正常運行,但如果我正常運行它,程序將暫停在if(timePassed> timeOut)。任何想法爲什麼發生這種情況我陷入了for循環無緣無故使用定時器
long timeout = 40000000;
while (lastAck != sent) {
currentTime = System.currentTimeMillis();
packetSentTime = send_timer[(sent - 1) % cwnd];
timePassed = currentTime - packetSentTime;
if (timePassed > timeOut) {
ssthresh = (int) (Math.ceil(cwnd/2));
cwnd = 1;
sent = lastAck;
System.out.println("Time out occured\n" + lastAck);
timeout = true;
break;
}
}
你調查了'volatile'關鍵字嗎?你可能會看[這個問題](http://stackoverflow.com/questions/7369742/why-doesnt-this-java-loop-in-a-thread-work?rq=1) – KevinO
Thankyouu !!!一直堅持了一個小時! – amoh