다음을 통해 공유


ForkJoinPool 클래스

정의

ExecutorService 실행ForkJoinTask용입니다.

[Android.Runtime.Register("java/util/concurrent/ForkJoinPool", DoNotGenerateAcw=true)]
public class ForkJoinPool : Java.Util.Concurrent.AbstractExecutorService
[<Android.Runtime.Register("java/util/concurrent/ForkJoinPool", DoNotGenerateAcw=true)>]
type ForkJoinPool = class
    inherit AbstractExecutorService
상속
특성

설명

ExecutorService 실행ForkJoinTask용입니다. A ForkJoinPool 는 관리 및 모니터링 작업뿐만 아니라 비ForkJoinTask 클라이언트의 제출에 대한 진입점을 제공합니다.

A ForkJoinPool 는 주로 em>work-stealing</em>을 사용함으로써 <다른 종류의 다른 종류 ExecutorService 와 다릅니다. 풀의 모든 스레드는 풀에 제출되거나 다른 활성 작업에 의해 생성된 작업을 찾아 실행하려고 시도합니다(결국 작업이 없는 경우 대기를 차단). 이렇게 하면 대부분의 태스크가 다른 하위 작업을 생성할 때(대부분 ForkJoinTask처럼) 효율적으로 처리할 수 있을 뿐만 아니라 많은 작은 작업이 외부 클라이언트에서 풀에 제출될 때도 효율적으로 처리할 수 있습니다. 특히 생성자ForkJoinPool에서 em>asyncMode</em>을 true로 설정하는 <경우 s는 조인되지 않은 이벤트 스타일 작업에 사용하기에 적합할 수도 있습니다. 모든 작업자 스레드는 집합true을 사용하여 Thread#isDaemon 초기화됩니다.

정적 #commonPool() 은 사용 가능하며 대부분의 애플리케이션에 적합합니다. 공용 풀은 지정된 풀에 명시적으로 제출되지 않은 ForkJoinTask에서 사용됩니다. 일반적으로 공용 풀을 사용하면 리소스 사용량이 줄어듭니다(해당 스레드는 사용되지 않는 기간 동안 천천히 회수되고 이후 사용 시 복원됨).

별도의 풀 또는 사용자 지정 풀 ForkJoinPool 이 필요한 애플리케이션의 경우 지정된 대상 병렬 처리 수준으로 생성될 수 있습니다. 기본적으로 사용 가능한 프로세서 수와 같습니다. 풀은 일부 작업이 다른 작업에 조인되기 위해 대기하는 동안 중단된 경우에도 내부 작업자 스레드를 동적으로 추가, 일시 중단 또는 다시 시작하면 충분한 활성(또는 사용 가능한) 스레드를 유지하려고 시도합니다. 그러나 차단된 I/O 또는 기타 관리되지 않는 동기화가 발생할 경우 이러한 조정이 보장되지 않습니다. 중첩된 ManagedBlocker 인터페이스를 사용하면 수용된 동기화 종류의 확장을 사용할 수 있습니다. 클래스 ThreadPoolExecutor에 설명된 매개 변수가 있는 생성자를 사용하여 기본 정책을 재정의할 수 있습니다.

이 클래스는 실행 및 수명 주기 제어 메서드 외에도 포크/조인 애플리케이션을 개발, 튜닝 및 모니터링하는 데 도움이 되는 상태 검사 메서드(예 #getStealCount: )를 제공합니다. 또한 메서드 #toString 는 비공식적인 모니터링을 위해 편리한 형태로 풀 상태의 표시를 반환합니다.

다른 ExecutorServices의 경우와 마찬가지로 다음 표에 요약된 세 가지 주요 작업 실행 방법이 있습니다. 이는 현재 풀에서 포크/조인 계산에 아직 참여하지 않은 클라이언트에서 주로 사용하도록 설계되었습니다. 이러한 메서드의 기본 형식은 인스턴스를 ForkJoinTask허용하지만 오버로드된 양식은 일반 Runnable또는 Callable기반 활동의 혼합 실행도 허용합니다. 그러나 풀에서 이미 실행 중인 태스크는 일반적으로 조인되지 않는 비동기 이벤트 스타일 작업을 사용하지 않는 한 일반적으로 테이블에 나열된 계산 내 양식을 사용해야 합니다. 이 경우 선택한 메서드 간에 차이가 거의 없습니다.

<table class="plain">caption Summary of task execution methods</caption><tr><td></td><th scope="col"> Call from non-fork/join clients</th<>th scope="col"> Call from fork/join computations</th<>/tr tr tr<<>>th scope="row" style="text-align:left"> Arrange async execution</th><td><#execute(ForkJoinTask)/td td></td/td>><ForkJoinTask#fork><</tr><tr><th scope="row" style="text-align:left"> Await 및 obtain result</th><td>#invoke(ForkJoinTask)</td<><>ForkJoinTask#invoke/td<>/tr tr tr><<>th scope="row" style="text-align:left"> Arrange exec and obtain Future</th><td><#submit(ForkJoinTask)/td><td>ForkJoinTask#fork (ForkJoinTasks em>are</em> Futures<)</td<>/tr></table>

공통 풀을 생성하는 데 사용되는 매개 변수는 System#getProperty 시스템 속성을 설정하여 제어할 수 있습니다. <ul><lijava.util.concurrent.ForkJoinPool.common.parallelism> - 병렬 처리 수준, 음수가 아닌 정수 <li>java.util.concurrent.ForkJoinPool.common.threadFactory - 클래스 이름.ForkJoinWorkerThreadFactory ClassLoader#getSystemClassLoader() 시스템 클래스 로더를 사용하여 이 클래스를 로드합니다. <li>java.util.concurrent.ForkJoinPool.common.exceptionHandler - 의 클래스 이름입니다 UncaughtExceptionHandler. ClassLoader#getSystemClassLoader() 시스템 클래스 로더를 사용하여 이 클래스를 로드합니다. <li>java.util.concurrent.ForkJoinPool.common.maximumSpares - 대상 병렬 처리를 유지하기 위해 허용되는 최대 추가 스레드 수(기본값 256)입니다. </ul> 시스템 속성을 통해 스레드 팩터리를 제공하지 않으면 공용 풀은 시스템 클래스 로더를 Thread#getContextClassLoader() 스레드 컨텍스트 클래스 로더로 사용하는 팩터리를 사용합니다. 또한 있는 SecurityManager 경우 공용 풀은 활성화되지 않은 Permissions 스레드를 제공하는 팩터리를 사용합니다.

이러한 설정을 설정하는 동안 오류가 발생하면 기본 매개 변수가 사용됩니다. 병렬 처리 속성을 0으로 설정하거나 반환 null할 수 있는 팩터리를 사용하여 공용 풀에서 스레드 사용을 사용하지 않도록 설정하거나 제한할 수 있습니다. 그러나 이렇게 하면 조인되지 않은 작업이 실행되지 않을 수 있습니다.

<b>구현 정보:</b> 이 구현은 실행 중인 스레드의 최대 수를 32767로 제한합니다. 최대 개수보다 큰 풀을 만들려고 하면 결과가 발생합니다 IllegalArgumentException.

이 구현은 풀이 종료되거나 내부 리소스가 소진된 경우에만 제출된 작업(즉, throw) RejectedExecutionException을 거부합니다.

1.7에 추가되었습니다.

에 대한 java.util.concurrent.ForkJoinPoolJava 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

생성자

ForkJoinPool()

ForkJoinPool 다른 모든 매개 변수에 대한 기본값을 사용하여 병렬 처리와 동일한 java.lang.Runtime#availableProcessors병렬 처리를 만듭니다(참조#ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, boolean, int, int, int, Predicate, long, TimeUnit)).

ForkJoinPool(Int32)

ForkJoinPool 다른 모든 매개 변수에 대한 기본값을 사용하여 표시된 병렬 처리 수준으로 만듭니다(참조#ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, boolean, int, int, int, Predicate, long, TimeUnit)).

ForkJoinPool(Int32, ForkJoinPool+IForkJoinWorkerThreadFactory, Thread+IUncaughtExceptionHandler, Boolean)

ForkJoinPool#defaultForkJoinWorkerThreadFactory 기본 스레드 팩터리, UncaughtExceptionHandler 없음 및 비동기 LIFO 처리 모드를 사용하여 병렬 처리와 같은 java.lang.Runtime#availableProcessors병렬 처리를 만듭니다.

ForkJoinPool(Int32, ForkJoinPool+IForkJoinWorkerThreadFactory, Thread+IUncaughtExceptionHandler, Boolean, Int32, Int32, Int32, IPredicate, Int64, TimeUnit)

ExecutorService 실행ForkJoinTask용입니다.

ForkJoinPool(IntPtr, JniHandleOwnership)

JNI 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

속성

ActiveThreadCount

현재 작업을 훔치거나 실행하는 스레드 수의 예상값을 반환합니다.

AsyncMode

이 풀이 조인되지 않은 포크된 작업에 로컬 선입선 실행 일정 모드를 사용하는 경우를 반환 true 합니다.

Class

Object런타임 클래스를 반환합니다.

(다음에서 상속됨 Object)
CommonPoolParallelism

공용 풀의 대상 병렬 처리 수준을 반환합니다.

DefaultForkJoinWorkerThreadFactory

새 ForkJoinWorkerThread를 만듭니다.

Factory

새 작업자를 생성하는 데 사용되는 팩터리를 반환합니다.

Handle

기본 Android 인스턴스에 대한 핸들입니다.

(다음에서 상속됨 Object)
HasQueuedSubmissions

true 아직 실행을 시작하지 않은 작업이 이 풀에 제출된 경우 반환합니다.

IsQuiescent

모든 작업자 스레드가 현재 유휴 상태인지를 반환 true 합니다.

IsShutdown

이 풀이 종료되었는지를 반환 true 합니다.

IsTerminated

종료 후 모든 작업이 완료되었는지를 반환 true 합니다.

IsTerminating

종료 프로세스가 시작되었지만 아직 완료되지 않은 경우 반환 true 합니다.

JniIdentityHashCode

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)
JniPeerMembers

ExecutorService 실행ForkJoinTask용입니다.

Parallelism

이 풀의 대상 병렬 처리 수준을 반환합니다.

PeerReference

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)
PoolSize

시작되었지만 아직 종료되지 않은 작업자 스레드 수를 반환합니다.

QueuedSubmissionCount

아직 실행을 시작하지 않은 이 풀에 제출된 작업의 예상 수를 반환합니다.

QueuedTaskCount

작업자 스레드가 큐에 현재 보유하고 있는 총 작업 수의 예상을 반환합니다(실행이 시작되지 않은 풀에 제출된 작업은 포함하지 않음).

RunningThreadCount

작업 조인 대기 또는 기타 관리되는 동기화를 위해 차단되지 않은 작업자 스레드의 예상 수를 반환합니다.

StealCount

제출자가 아닌 스레드에 의해 실행된 완료된 작업의 총 개수에 대한 예상을 반환합니다.

ThresholdClass

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

ThresholdType

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

UncaughtExceptionHandler

작업을 실행하는 동안 복구할 수 없는 오류로 인해 종료되는 내부 작업자 스레드에 대한 처리기를 반환합니다.

메서드

AwaitQuiescence(Int64, TimeUnit)

이 풀에서 작동하는 ForkJoinTask에 의해 호출되는 경우 적용에 해당합니다 ForkJoinTask#helpQuiesce.

AwaitTermination(Int64, TimeUnit)

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

AwaitTerminationAsync(Int64, TimeUnit)

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 AbstractExecutorService)
Clone()

이 개체의 복사본을 만들고 반환합니다.

(다음에서 상속됨 Object)
CommonPool()

공통 풀 인스턴스를 반환합니다.

Dispose()

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)
Dispose(Boolean)

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)
DrainTasksTo(ICollection<ForkJoinTask>)

큐 예약에서 사용 가능한 미해결 제출 및 포크된 작업을 모두 제거하고 실행 상태를 변경하지 않고 지정된 컬렉션에 추가합니다.

Equals(Object)

다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다.

(다음에서 상속됨 Object)
Execute(ForkJoinTask)

지정된 작업의 (비동기) 실행을 정렬합니다.

Execute(IRunnable)
GetHashCode()

개체에 대한 해시 코드 값을 반환합니다.

(다음에서 상속됨 Object)
Invoke(ForkJoinTask)

지정된 작업을 수행하고 완료 시 결과를 반환합니다.

InvokeAll(ICollection)

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 AbstractExecutorService)
InvokeAll(ICollection, Int64, TimeUnit)

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 AbstractExecutorService)
InvokeAny(ICollection)

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 AbstractExecutorService)
InvokeAny(ICollection, Int64, TimeUnit)

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 AbstractExecutorService)
JavaFinalize()

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.

(다음에서 상속됨 Object)
ManagedBlock(ForkJoinPool+IManagedBlocker)

지정된 차단 작업을 실행합니다.

NewTaskFor(ICallable)

RunnableFuture 지정된 호출 가능한 작업에 대한 값을 반환합니다.

(다음에서 상속됨 AbstractExecutorService)
NewTaskFor(IRunnable, Object)

RunnableFuture 지정된 실행 가능 및 기본값에 대한 값을 반환합니다.

(다음에서 상속됨 AbstractExecutorService)
Notify()

이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다.

(다음에서 상속됨 Object)
NotifyAll()

이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다.

(다음에서 상속됨 Object)
PollSubmission()

사용할 수 있는 경우 다음 미해제 제출을 제거하고 반환합니다.

SetHandle(IntPtr, JniHandleOwnership)

Handle 속성을 설정합니다.

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

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

ShutdownNow()

모든 작업을 취소 및/또는 중지하고 이후에 제출된 모든 작업을 거부하려고 할 수 있습니다.

Submit(ForkJoinTask)

실행을 위해 ForkJoinTask를 제출합니다.

Submit(ICallable)

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 AbstractExecutorService)
Submit(IRunnable)

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

(다음에서 상속됨 AbstractExecutorService)
Submit(IRunnable, Object)

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 AbstractExecutorService)
ToArray<T>()

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)
ToString()

개체의 문자열 표현을 반환합니다.

(다음에서 상속됨 Object)
UnregisterFromRuntime()

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)
Wait()

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 <><중단/종료>합니다.>

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

IJavaPeerable.Disposed()

ExecutorService 실행ForkJoinTask용입니다.

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

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)
IJavaPeerable.Finalized()

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)
IJavaPeerable.JniManagedPeerState

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ExecutorService 실행ForkJoinTask용입니다.

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

ExecutorService 실행ForkJoinTask용입니다.

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

ExecutorService 실행ForkJoinTask용입니다.

(다음에서 상속됨 Object)

확장 메서드

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

ExecutorService 실행ForkJoinTask용입니다.

GetJniTypeName(IJavaPeerable)

ExecutorService 실행ForkJoinTask용입니다.

AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

ExecutorService 실행ForkJoinTask용입니다.

InvokeAnyAsync(IExecutorService, ICollection)

ExecutorService 실행ForkJoinTask용입니다.

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

ExecutorService 실행ForkJoinTask용입니다.

적용 대상