IExecutorService 인터페이스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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)
를 확장합니다. 메서드 invokeAny
및 invokeAll
는 가장 일반적으로 유용한 대량 실행 형식을 수행하여 태스크 컬렉션을 실행한 다음 하나 이상의 또는 모두 완료를 기다립니다. 클래스 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
}
}}
다음 메서드는 먼저 를 호출하여 들어오는 작업을 거부한 다음, 필요한 경우 를 호출 shutdown
shutdownNow
하여 느린 작업을 취소하여 을 두 단계로 종료 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 |
이 실행기가 종료된 경우 를 반환 |
IsTerminated |
종료 후 모든 작업이 완료된 경우 를 반환 |
JniIdentityHashCode |
|
JniManagedPeerState |
관리되는 피어의 상태입니다. (다음에서 상속됨 IJavaPeerable) |
JniPeerMembers |
멤버 액세스 및 호출 지원. (다음에서 상속됨 IJavaPeerable) |
PeerReference |
JniObjectReference 래핑된 Java 개체 instance 의 를 반환합니다. (다음에서 상속됨 IJavaPeerable) |
메서드
AwaitTermination(Int64, TimeUnit) |
종료 요청 후 모든 태스크가 실행을 완료하거나 시간 제한이 발생하거나 현재 스레드가 중단될 때까지 차단합니다( 먼저 발생). |
Disposed() |
instance 삭제되었을 때 호출됩니다. (다음에서 상속됨 IJavaPeerable) |
DisposeUnlessReferenced() |
이 instance 대한 미해결 참조가 없으면 를 호출 |
Execute(IRunnable) |
나중에 지정된 명령을 실행합니다. (다음에서 상속됨 IExecutor) |
Finalized() |
instance 완료되면 호출됩니다. (다음에서 상속됨 IJavaPeerable) |
InvokeAll(ICollection) |
지정된 작업을 실행하여 모든 작업이 완료되면 해당 상태 보유하는 선물 목록과 결과를 반환합니다. |
InvokeAll(ICollection, Int64, TimeUnit) |
지정된 작업을 실행하여 모든 작업이 완료되거나 시간 제한이 만료될 때 먼저 발생하는 상태 보유하는 선물 목록을 반환합니다. |
InvokeAny(ICollection) |
지정된 태스크를 실행하여 성공적으로 완료된 작업의 결과를 반환합니다(i. |
InvokeAny(ICollection, Int64, TimeUnit) |
지정된 태스크를 실행하여 성공적으로 완료된 작업의 결과를 반환합니다(i. |
SetJniIdentityHashCode(Int32) |
에서 반환 |
SetJniManagedPeerState(JniManagedPeerStates) |
|
SetPeerReference(JniObjectReference) |
에서 반환 |
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) |
|
GetJniTypeName(IJavaPeerable) |
|
AwaitTerminationAsync(IExecutorService, Int64, TimeUnit) |
|
InvokeAnyAsync(IExecutorService, ICollection) |
|
InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit) |
|