Leaf
Leaf copied to clipboard
waitAndSleep的目的是尽可能让接下去执行的时候号段预加载线程已经执行完了吗
private void waitAndSleep(SegmentBuffer buffer) {
int roll = 0;
while (buffer.getThreadRunning().get()) {
roll += 1;
if(roll > 10000) {
try {
TimeUnit.MILLISECONDS.sleep(10);
break;
} catch (InterruptedException e) {
logger.warn("Thread {} Interrupted",Thread.currentThread().getName());
break;
}
}
}
}
如果是,这种方式可靠性高否
阅读代码时对这里也有疑问,做了调整。将waitAndSleep的调用往后挪了几行,写到
if (value < segment.getMax()) { return value; } 这块代码的后面了。这里计算10000次加法,耗时在1ms下,然后sleep 10ms也太长了。我把这里改成了 最多sleep10次,然后每次sleep2ms
我是都降低一倍处理