CompletableFuture
개념
API 및 내부 동작
final boolean tryPushStack(Completion c) { Completion h = stack; // 기존에 있던 stack 변수 소환 lazySetNext(c, h); // 새로운 Completion 객체의 next 필드를 기존 stack 변수로 설정 return UNSAFE.compareAndSwapObject(this, STACK, h, c); // stack 변수를 새로운 Completion 객체로 대체 } static void lazySetNext(Completion c, Completion next) { UNSAFE.putOrderedObject(c, NEXT, next); } final void cleanStack() { for (Completion p = null, q = stack; q != null;) { Completion s = q.next; if (q.isLive()) { p = q; q = s; } else if (p == null) { casStack(q, s); q = stack; } else { p.next = s; if (p.isLive()) q = s; else { p = null; // restart q = stack; } } } }
생성
결과 조회
결과 등록
콜백 등록
Last updated