ReferenceQueue — 참조 큐 클래스

ReferenceQueue — 참조 큐 클래스

ReferenceQueue는 참조 큐로, 등록된 참조 객체가 적절한 도달 가능성(reachability) 변경을 감지한 뒤 가비지 컬렉터에 의해 이 큐에 추가돼요. 참조 객체를 이 큐에 등록해 두면, 가비지 컬렉터가 참조 대상의 회수 가능성을 감지했을 때 그 참조 객체를 큐에서 꺼내 정리 작업을 이어서 수행할 수 있어요.

출처: Java API Reference

본문

public ReferenceQueue()

새 참조 큐를 만들어요.

public Reference<? extends T> poll()

이 큐에서 참조 객체를 하나 제거하고 반환해요. 큐가 비어 있으면 즉시 null을 반환해요 (대기하지 않음). 주로 폴링 방식으로 참조를 비동기적으로 처리할 때 사용해요.

public Reference<? extends T> remove(long timeout) throws InterruptedException

이 큐에서 참조 객체를 하나 제거하고 반환해요. 현재 사용 가능한 참조가 없다면 최대 timeout 밀리초 동안 대기해요. 참조를 얻지 못하고 대기 시간이 지나면 null을 반환해요. 대기 중 인터럽트되면 InterruptedException을 던져요.

public Reference<? extends T> remove() throws InterruptedException

이 큐에서 참조 객체를 하나 제거하고 반환해요. 참조를 얻을 수 있을 때까지 무기한 대기해요. 대기 중 인터럽트되면 InterruptedException을 던져요.

이 클래스는 SoftReference, WeakReference, PhantomReferenceregister할 때 대상 큐로 지정해, 참조 대상 회수 시 참조를 받아와 리소스 정리(예: 파일, 소켓 닫기)를 수행하는 데 널리 사용돼요.

더 알아보기 (Learn more)