3114 |
|
long nanos = unit.toNanos(timeout); |
3115 |
|
if (isTerminated()) |
3116 |
|
return true; |
3117 |
< |
long startTime = System.nanoTime(); |
3118 |
< |
boolean terminated = false; |
3117 |
> |
if (nanos <= 0L) |
3118 |
> |
return false; |
3119 |
> |
long deadline = System.nanoTime() + nanos; |
3120 |
|
synchronized (this) { |
3121 |
< |
for (long waitTime = nanos, millis = 0L;;) { |
3122 |
< |
if (terminated = isTerminated() || |
3123 |
< |
waitTime <= 0L || |
3124 |
< |
(millis = unit.toMillis(waitTime)) <= 0L) |
3125 |
< |
break; |
3126 |
< |
wait(millis); |
3127 |
< |
waitTime = nanos - (System.nanoTime() - startTime); |
3121 |
> |
for (;;) { |
3122 |
> |
if (isTerminated()) |
3123 |
> |
return true; |
3124 |
> |
if (nanos <= 0L) |
3125 |
> |
return false; |
3126 |
> |
long millis = TimeUnit.NANOSECONDS.toMillis(nanos); |
3127 |
> |
wait(millis > 0L ? millis : 1L); |
3128 |
> |
nanos = deadline - System.nanoTime(); |
3129 |
|
} |
3130 |
|
} |
3129 |
– |
return terminated; |
3131 |
|
} |
3132 |
|
|
3133 |
|
/** |