スレッドを実行しているので、laskAck変数が更新されています。タイムアウトを意図的に非常に大きく設定しているので、スレッドにlaskAck変数を更新する機会があります。私は私のコードをデバッグし、ステップバイステップで動作しますが、私はそれを正常に実行すると、プログラムは(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
ありがとうございました!!!これに1時間こだわった! – amoh