能否优化Future的 AbstractFuture#awaitDone(boolean timed, long nanos) 的性能
Coneboy-k opened this issue · 1 comments
Coneboy-k commented
在await时,能否添加自旋,减少waiter的上线文切换 ?
nanos = deadline - System.nanoTime();
if (nanos <= 0L) { // 设置超时, 阻塞当前线程(阻塞指定时间)
removeWaiter(q);
return state;
}
LockSupport.parkNanos(this, nanos);
如果等待时间过短,比如小于1000ns ,那么上下文的切换没有必要。此处请参考Guava 23 的实现。
com.google.common.util.concurrent.AbstractFuture#get(long, java.util.concurrent.TimeUnit)
另外 System.nanoTime() 有可能返回0
Coneboy-k commented
;-)