fengjiachun/Jupiter

能否优化Future的 AbstractFuture#awaitDone(boolean timed, long nanos) 的性能

Coneboy-k opened this issue · 1 comments

在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

;-)