Почему метод allOf() в CompletableFuture.java реализован с использованием чего-то вроде сбалансированного дерева?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему метод allOf() в CompletableFuture.java реализован с использованием чего-то вроде сбалансированного дерева?

Сообщение Anonymous »

Я обнаружил, что метод allOf() в CompletableFuture.java реализован с использованием чего-то вроде сбалансированного дерева.
Мне любопытно, почему он реализован именно так?
Можно ли его реализовать с помощью чего-то другого, например ConcurrentHashMap и AutomicInteger?
Я проверил исходный код этого класса.
/** Recursively constructs a tree of completions. */
static CompletableFuture andTree(CompletableFuture[] cfs, int lo, int hi) {
CompletableFuture d = new CompletableFuture();

if (lo > hi) // empty
d.result = NIL;
else {
CompletableFuture a, b;
int mid = (lo + hi) >>> 1;

if ((a = (lo == mid ? cfs[lo] :
andTree(cfs, lo, mid))) == null ||
(b = (lo == hi ? a : (hi == mid+1) ? cfs[hi] :
andTree(cfs, mid+1, hi))) == null)
throw new NullPointerException();

if (!d.biRelay(a, b)) {
BiRelay c = new BiRelay(d, a, b);
a.bipush(b, c);
c.tryFire(SYNC);
}
}
return d;
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-somethi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»