【发布时间】:2016-03-30 03:08:03
【问题描述】:
我有一个正在运行的线程不断更新我的 laskAck 变量。我故意将超时设置为非常大,以便我的线程有机会更新 laskAck 变量。当我调试代码并逐步运行时,它可以工作,但是如果我正常运行,程序会在 if (timePassed > timeOut) 处暂停。知道为什么会这样吗???
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这个关键字吗?你可以看看this question -
谢谢你!!!坚持了一个小时!
标签: java multithreading