>Java >java지도 시간 >콜백이 어떻게 Java 실행기에서 비차단 작업 완료 알림을 활성화할 수 있습니까?

콜백이 어떻게 Java 실행기에서 비차단 작업 완료 알림을 활성화할 수 있습니까?

DDD
DDD원래의
2024-11-18 09:38:02892검색

How Can Callbacks Enable Non-Blocking Task Completion Notifications in Java Executors?

Java Executors: 작업 완료에 대한 비차단 알림

Executor 서비스를 통해 수많은 작업을 처리해야 하는 경우 차단은 중요한 문제가 될 수 있습니다. 스택 공간 제약으로 인한 장애물. 이 문제를 피하려면 작업 완료 시 비차단 알림을 제출하는 콜백 접근 방식을 사용하는 것이 좋습니다.

콜백 인터페이스 생성

원하는 인터페이스를 캡슐화하는 콜백 인터페이스를 정의하세요. 완료 알림을 위한 매개변수입니다. 제공된 코드 예제에서:

public interface Callback {
  void complete();
}

콜백으로 작업 래핑

이 콜백 인터페이스를 활용하여 실행 가능한 작업에 대한 래퍼 클래스를 만듭니다.

class CallbackTask implements Runnable {
  private final Runnable task;
  private final Callback callback;

  CallbackTask(Runnable task, Callback callback) {
    this.task = task;
    this.callback = callback;
  }

  @Override
  public void run() {
    task.run();
    callback.complete();
  }
}

콜백을 사용하여 작업 제출

콜백 래퍼가 있는 상태에서 다음과 같이 실행기 서비스에 작업을 제출합니다.

ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(new CallbackTask(task, callback));

알림 콜백

콜백을 구현하여 완료 알림을 처리하고 대기열에서 다음 작업을 실행합니다.

public class CallbackImpl implements Callback {
  private Queue<Task> queue;

  @Override
  public void complete() {
    if (!queue.isEmpty()) {
      executor.submit(new CallbackTask(queue.poll(), this));
    }
  }
}

Java 8의 CompletableFuture

이후 Java 8의 CompletableFuture 클래스는 비동기 프로세스 생성 및 관리를 위한 보다 포괄적인 접근 방식을 제공합니다.

CompletableFuture<String> f = CompletableFuture.supplyAsync(svc::work);
f.thenAccept(listener::notify);

이 코드는 비동기 작업을 나타내는 CompletableFuture를 생성하고 완료 시 트리거될 콜백을 정의합니다.

위 내용은 콜백이 어떻게 Java 실행기에서 비차단 작업 완료 알림을 활성화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.