Class SdkAdvancedAsyncClientOption<T>
- java.lang.Object
-
- software.amazon.awssdk.utils.AttributeMap.Key<T>
-
- software.amazon.awssdk.core.client.config.ClientOption<T>
-
- software.amazon.awssdk.core.client.config.SdkAdvancedAsyncClientOption<T>
-
- Type Parameters:
T- The type of value associated with the option.
public final class SdkAdvancedAsyncClientOption<T> extends ClientOption<T>
A collection of advanced options that can be configured on an async AWS client viaClientAsyncConfiguration.Builder.advancedOption(SdkAdvancedAsyncClientOption, Object).These options are usually not required outside of testing or advanced libraries, so most users should not need to configure them.
-
-
Field Summary
Fields Modifier and Type Field Description static SdkAdvancedAsyncClientOption<Executor>FUTURE_COMPLETION_EXECUTORConfigure theExecutorthat should be used to complete theCompletableFuturethat is returned by the async service client.
-
-
-
Field Detail
-
FUTURE_COMPLETION_EXECUTOR
public static final SdkAdvancedAsyncClientOption<Executor> FUTURE_COMPLETION_EXECUTOR
Configure theExecutorthat should be used to complete theCompletableFuturethat is returned by the async service client. By default, this is a dedicated, per-clientThreadPoolExecutorthat is managed by the SDK.The configured
Executorwill be invoked by the async HTTP client's I/O threads (e.g., EventLoops), which must be reserved for non-blocking behavior. Blocking an I/O thread can cause severe performance degradation, including across multiple clients, as clients are configured, by default, to share a single I/O thread pool (e.g., EventLoopGroup).You should typically only want to customize the future-completion
Executorfor a few possible reasons:- You want more fine-grained control over the
ThreadPoolExecutorused, such as configuring the pool size or sharing a single pool between multiple clients. - You want to add instrumentation (i.e., metrics) around how the
Executoris used. - You know, for certain, that all of your
CompletableFutureusage is strictly non-blocking, and you wish to remove the minor overhead incurred by using a separate thread. In this case, you can useRunnable::runto execute the future-completion directly from within the I/O thread.
- You want more fine-grained control over the
-
-