티스토리 뷰

JAVA

Disposable

kkoon9 2022. 2. 4. 20:46

현재 진행중인 사이드 프로젝트에서 사용하는 WebFlux를 분석하면서 정리한 글입니다.

 

Disposable는 reactor.core 패키지 내에 있는 함수형 인터페이스입니다.

태스크 또는 리소스를 취소/폐기할 수 있음을 나타냅니다.

삭제 메서드에 대한 호출이 idempotent이거나 같아야 합니다.

void dispose();

기본 태스크 또는 리소스를 취소하거나 삭제합니다.

이 메서드를 idempotent로 만들려면 구현이 필요합니다.

default boolean isDisposed() {
		return false;
}

리소스 또는 태스크가 삭제되면 선택적으로 true를 반환합니다.

처분을 추적하기 위해 구현이 필요한 것은 아니며, 따라서 처분되더라도 결코 true로 return되지 않을 수 있습니다.

그러나 리소스 또는 태스크가 삭제된다는 보장이 있는 경우에만 true를 반환해야 합니다.

Returns:

리소스 또는 태스크가 삭제된다는 보장이 있는 경우 true입니다.

interface Composite extends Disposable {}

Disposable 자신 스스로를 상속받는 Disposable 컨테이너입니다.

disposables을 축적하여 dispose()를 이용하여 한 번에 처리합니다.

add(Disposable) 메서드를 사용하면 컨테이너에 소유권을 부여하고, 컨테이너는 이제 이러한 컨테이너를 처분할 책임을 가집니다.

그러나 참조를 유지하고 해당 요소를 다시 처리할 책임이 있는 remove(Disposable)를 사용하면 개별 요소의 소유권을 되찾을 수 있습니다.

일단 폐기되면 컨테이너를 재사용할 수 없으며 Disposable.Composite가 필요합니다.

interface Swap extends Disposable, Supplier<Disposable> {}

내부 Disposable 컨테이너를 원자적으로 업데이트/교체하고 컨테이너 자체를 폐기할 수 있는 Disposable 컨테이너입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함