Share via


IExecutorService 인터페이스

정의

Executor 하나 이상의 비동기 작업의 진행률을 추적하기 위해 를 생성 Future 할 수 있는 종료 및 메서드를 관리하는 메서드를 제공하는 입니다.

[Android.Runtime.Register("java/util/concurrent/ExecutorService", "", "Java.Util.Concurrent.IExecutorServiceInvoker")]
public interface IExecutorService : IDisposable, Java.Interop.IJavaPeerable, Java.Util.Concurrent.IExecutor
[<Android.Runtime.Register("java/util/concurrent/ExecutorService", "", "Java.Util.Concurrent.IExecutorServiceInvoker")>]
type IExecutorService = interface
    interface IExecutor
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
파생
특성
구현

설명

Executor 하나 이상의 비동기 작업의 진행률을 추적하기 위해 를 생성 Future 할 수 있는 종료 및 메서드를 관리하는 메서드를 제공하는 입니다.

ExecutorService 종료하면 새 작업이 거부될 수 있습니다. 를 종료하기 위해 두 가지 메서드가 ExecutorService제공됩니다. 메서드는 #shutdown 이전에 제출된 작업을 종료하기 전에 실행할 수 있도록 허용하지만 #shutdownNow , 메서드는 대기 태스크가 시작되지 않도록 하고 현재 실행 중인 작업을 중지하려고 시도합니다. 종료 시 실행기는 현재 실행 중인 태스크가 없고, 실행을 기다리는 작업이 없으며, 새 작업을 제출할 수 없습니다. 사용되지 않는 은 ExecutorService 리소스의 매립을 허용하도록 종료해야 합니다.

메서드 submit 는 실행을 취소하거나 완료를 기다리는 데 사용할 수 있는 을 Future 만들고 반환하여 기본 메서드 Executor#execute(Runnable) 를 확장합니다. 메서드 invokeAnyinvokeAll 는 가장 일반적으로 유용한 대량 실행 형식을 수행하여 태스크 컬렉션을 실행한 다음 하나 이상의 또는 모두 완료를 기다립니다. 클래스 ExecutorCompletionService 를 사용하여 이러한 메서드의 사용자 지정된 변형을 작성할 수 있습니다.

클래스는 이 Executors 패키지에 제공된 실행기 서비스에 대한 팩터리 메서드를 제공합니다.

<h2>사용 예제</h2>

다음은 스레드 풀 서비스의 스레드가 들어오는 요청을 수신하는 네트워크 서비스의 스케치입니다. 미리 구성된 Executors#newFixedThreadPool 팩터리 메서드를 사용합니다.

{@code
            class NetworkService implements Runnable {
              private final ServerSocket serverSocket;
              private final ExecutorService pool;

              public NetworkService(int port, int poolSize)
                  throws IOException {
                serverSocket = new ServerSocket(port);
                pool = Executors.newFixedThreadPool(poolSize);
              }

              public void run() { // run the service
                try {
                  for (;;) {
                    pool.execute(new Handler(serverSocket.accept()));
                  }
                } catch (IOException ex) {
                  pool.shutdown();
                }
              }
            }

            class Handler implements Runnable {
              private final Socket socket;
              Handler(Socket socket) { this.socket = socket; }
              public void run() {
                // read and service request on socket
              }
            }}

다음 메서드는 먼저 를 호출하여 들어오는 작업을 거부한 다음, 필요한 경우 를 호출 shutdownshutdownNow하여 느린 작업을 취소하여 을 두 단계로 종료 ExecutorService 합니다.

{@code
            void shutdownAndAwaitTermination(ExecutorService pool) {
              pool.shutdown(); // Disable new tasks from being submitted
              try {
                // Wait a while for existing tasks to terminate
                if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {
                  pool.shutdownNow(); // Cancel currently executing tasks
                  // Wait a while for tasks to respond to being cancelled
                  if (!pool.awaitTermination(60, TimeUnit.SECONDS))
                      System.err.println("Pool did not terminate");
                }
              } catch (InterruptedException ex) {
                // (Re-)Cancel if current thread also interrupted
                pool.shutdownNow();
                // Preserve interrupt status
                Thread.currentThread().interrupt();
              }
            }}

메모리 일관성 효과: 또는 Callable 태스크를 i happen-before</i>>에 ExecutorService<제출하기 전에 스레드의 Runnable 작업으로, 해당 태스크에서 수행한 모든 작업은 를 통해 Future.get()결과를 검색하기 전에 발생합니다.

1.5에 추가되었습니다.

에 대한 Java 설명서입니다 java.util.concurrent.ExecutorService.

이 페이지의 일부는 만들고 공유하며 에 설명된 용어에 따라 사용되는 작업을 기반으로 수정됩니다.

속성

Handle

기본 Android 개체의 JNI 값을 가져옵니다.

(다음에서 상속됨 IJavaObject)
IsShutdown

이 실행기가 종료된 경우 를 반환 true 합니다.

IsTerminated

종료 후 모든 작업이 완료된 경우 를 반환 true 합니다.

JniIdentityHashCode

java.lang.System.identityHashCode() 래핑된 instance 값을 반환합니다.

(다음에서 상속됨 IJavaPeerable)
JniManagedPeerState

관리되는 피어의 상태입니다.

(다음에서 상속됨 IJavaPeerable)
JniPeerMembers

멤버 액세스 및 호출 지원.

(다음에서 상속됨 IJavaPeerable)
PeerReference

JniObjectReference 래핑된 Java 개체 instance 의 를 반환합니다.

(다음에서 상속됨 IJavaPeerable)

메서드

AwaitTermination(Int64, TimeUnit)

종료 요청 후 모든 태스크가 실행을 완료하거나 시간 제한이 발생하거나 현재 스레드가 중단될 때까지 차단합니다( 먼저 발생).

Disposed()

instance 삭제되었을 때 호출됩니다.

(다음에서 상속됨 IJavaPeerable)
DisposeUnlessReferenced()

이 instance 대한 미해결 참조가 없으면 를 호출Dispose()합니다. 그렇지 않으면 아무 것도 수행하지 않습니다.

(다음에서 상속됨 IJavaPeerable)
Execute(IRunnable)

나중에 지정된 명령을 실행합니다.

(다음에서 상속됨 IExecutor)
Finalized()

instance 완료되면 호출됩니다.

(다음에서 상속됨 IJavaPeerable)
InvokeAll(ICollection)

지정된 작업을 실행하여 모든 작업이 완료되면 해당 상태 보유하는 선물 목록과 결과를 반환합니다.

InvokeAll(ICollection, Int64, TimeUnit)

지정된 작업을 실행하여 모든 작업이 완료되거나 시간 제한이 만료될 때 먼저 발생하는 상태 보유하는 선물 목록을 반환합니다.

InvokeAny(ICollection)

지정된 태스크를 실행하여 성공적으로 완료된 작업의 결과를 반환합니다(i.

InvokeAny(ICollection, Int64, TimeUnit)

지정된 태스크를 실행하여 성공적으로 완료된 작업의 결과를 반환합니다(i.

SetJniIdentityHashCode(Int32)

에서 반환 JniIdentityHashCode된 값을 설정합니다.

(다음에서 상속됨 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Executor 하나 이상의 비동기 작업의 진행률을 추적하기 위해 를 생성 Future 할 수 있는 종료 및 메서드를 관리하는 메서드를 제공하는 입니다.

(다음에서 상속됨 IJavaPeerable)
SetPeerReference(JniObjectReference)

에서 반환 PeerReference된 값을 설정합니다.

(다음에서 상속됨 IJavaPeerable)
Shutdown()

이전에 제출한 태스크가 실행되는 순서대로 종료를 시작하지만 새 작업은 허용되지 않습니다.

ShutdownNow()

현재 실행 중인 모든 작업을 중지하고, 대기 중인 태스크 처리를 중지하고, 실행을 기다리고 있던 작업 목록을 반환하려고 시도합니다.

Submit(ICallable)

실행을 위해 값 반환 작업을 제출하고 작업의 보류 중인 결과를 나타내는 Future를 반환합니다.

Submit(IRunnable)

실행을 위해 실행 가능한 태스크를 제출하고 해당 작업을 나타내는 Future를 반환합니다.

Submit(IRunnable, Object)

실행을 위해 실행 가능한 태스크를 제출하고 해당 작업을 나타내는 Future를 반환합니다.

UnregisterFromRuntime()

런타임이 이후 Java.Interop.JniRuntime+JniValueManager.PeekValue 호출에서 반환되지 않도록 이 instance 등록을 취소합니다.

(다음에서 상속됨 IJavaPeerable)

확장 메서드

JavaCast<TResult>(IJavaObject)

Android 런타임 확인 형식 변환을 수행합니다.

JavaCast<TResult>(IJavaObject)

Executor 하나 이상의 비동기 작업의 진행률을 추적하기 위해 를 생성 Future 할 수 있는 종료 및 메서드를 관리하는 메서드를 제공하는 입니다.

GetJniTypeName(IJavaPeerable)

Executor 하나 이상의 비동기 작업의 진행률을 추적하기 위해 를 생성 Future 할 수 있는 종료 및 메서드를 관리하는 메서드를 제공하는 입니다.

AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

Executor 하나 이상의 비동기 작업의 진행률을 추적하기 위해 를 생성 Future 할 수 있는 종료 및 메서드를 관리하는 메서드를 제공하는 입니다.

InvokeAnyAsync(IExecutorService, ICollection)

Executor 하나 이상의 비동기 작업의 진행률을 추적하기 위해 를 생성 Future 할 수 있는 종료 및 메서드를 관리하는 메서드를 제공하는 입니다.

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

Executor 하나 이상의 비동기 작업의 진행률을 추적하기 위해 를 생성 Future 할 수 있는 종료 및 메서드를 관리하는 메서드를 제공하는 입니다.

적용 대상