2949 |
|
long nanos = unit.toNanos(timeout); |
2950 |
|
if (isTerminated()) |
2951 |
|
return true; |
2952 |
< |
long startTime = System.nanoTime(); |
2953 |
< |
boolean terminated = false; |
2952 |
> |
if (nanos <= 0L) |
2953 |
> |
return false; |
2954 |
> |
long deadline = System.nanoTime() + nanos; |
2955 |
|
synchronized (this) { |
2956 |
< |
for (long waitTime = nanos, millis = 0L;;) { |
2957 |
< |
if (terminated = isTerminated() || |
2958 |
< |
waitTime <= 0L || |
2959 |
< |
(millis = unit.toMillis(waitTime)) <= 0L) |
2960 |
< |
break; |
2961 |
< |
wait(millis); |
2962 |
< |
waitTime = nanos - (System.nanoTime() - startTime); |
2956 |
> |
for (;;) { |
2957 |
> |
if (isTerminated()) |
2958 |
> |
return true; |
2959 |
> |
if (nanos <= 0L) |
2960 |
> |
return false; |
2961 |
> |
long millis = TimeUnit.NANOSECONDS.toMillis(nanos); |
2962 |
> |
wait(millis > 0L ? millis : 1L); |
2963 |
> |
nanos = deadline - System.nanoTime(); |
2964 |
|
} |
2965 |
|
} |
2964 |
– |
return terminated; |
2966 |
|
} |
2967 |
|
|
2968 |
|
/** |