DelayQueue는 지연이 만료될 때만 요소를 추출할 수 있는 무제한 차단 큐입니다. 대기열의 헤드는 지연이 만료된 후 가장 긴 시간을 보유하는 Delayed 요소입니다.
DelayQueue 차단 대기열은 시스템 개발에서도 자주 사용됩니다. 예를 들어, 캐시 시스템의 설계, 캐시에 있는 개체가 유휴 시간은 캐시에서 이동되어야 하며 작업 스케줄링 시스템은 작업의 실행 시간을 정확하게 파악할 수 있습니다. 시간이 중요한 많은 데이터를 스레드를 통해 처리해야 할 수도 있는데, 일반 스레드를 사용하면 모든 객체를 순회하면서 데이터가 만료되었는지 하나씩 확인해야 하기 때문에 실행 효율성이 떨어지지 않습니다. , 둘째, 이러한 디자인 스타일도 데이터의 정확성에 큰 영향을 미칩니다. 12시에 실행해야 하는 작업은 12시 1분까지 실행되지 않을 수 있으며, 이는 데이터 요구 사항이 높은 시스템에 더 큰 단점이 있습니다. 여기에서 DelayQueue를 사용할 수 있습니다.
호출 동작을 수행하려면 DelayDeque에 저장된 요소가 Delayed 인터페이스를 구현해야 합니다. Delayed 인터페이스는 객체를 지연된 객체로 만들어 DelayQueue 클래스에 저장된 객체에 활성화 날짜를 제공합니다. 이 인터페이스는 다음 두 가지 방법을 시행합니다.
CompareTo(Delayed o):Delayed接口继承了Comparable接口,因此有了这个方法。 getDelay(TimeUnit unit):这个方法返回到激活日期的剩余时间,时间单位由单位参数指定。
Delayed 인터페이스 구현
이 코드: 계약 체결 후 실행 시간을 현재 시간과 비교하여 해당 시점에서 계약 자동 실행을 구현합니다. .
스레드 시작, DelayQueue 작동 시작
스프링 부트가 로딩을 시작하고, 데이터 소스를 초기화하고, 단일 스레드를 시작합니다
기록을 남겨주세요!
관련 권장 사항:
Java 스레드 프로그래밍의 대기열 컨테이너 차단에 대한 심층적인 이해
위 내용은 JAVA에서 DelayQueue의 사용: 차단 큐, 지연 큐의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!