日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Grizzly core configuration

發布時間:2024/3/24 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Grizzly core configuration 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

核心配置

核心框架的主要配置點是傳輸實例(Transport instances)及其關聯的線程池(thread pools)。通過 NIOTransportBuilder 可以配置這兩個實體。

傳輸配置

正如有針對TCP和UDP的具體 NIOTransport 實現一樣,也有兩種具體的 NIOTransportBuilder 實現。
每個 NIOTransportBuilder 實現都公開了每種傳輸所獨有的可配置功能。以下內容描述了所有 NIOTransports 共有的配置屬性,
然后描述了 TCP 和 UDP NIOTransport 實現的屬性。

NIOTransportBuilder屬性

NIOTransportBuilder屬性描述
workerThreadPoolConfig此屬性公開ThreadPoolConfig實例,該實例允許配置將由此構建器構造的傳輸使用的工作線程池(work thread pool)。注意:根據所使用的IOStrategy,此值可以為null。
selectorThreadPoolConfig此屬性公開了ThreadPoolConfig實例,該實例允許配置將由此構建器構造的傳輸使用的選擇器/內核線程池。(selector/kernel thread pool)
IOStrategy設置此傳輸將使用的IOStrategy。請注意,在開始傳輸之前更改此值可能會對workerThreadPoolConfig屬性的返回值產生影響。如果未顯式設置任何值,則將使用WorkerThreadIOStrategy。有關Grizzly 2.3隨附的每個具體IOStrategy的詳細信息,請參見IOStrategies的部分。
memoryManager設置此傳輸使用的MemoryManager。如果未顯式設置任何值,則使用的MemoryManager將為NIOTransportBuilder.DEFAULT_MEMORY_MANAGER。有關MemoryManager系統的詳細信息,請參閱“內存管理”部分。
selectorHandler設置此傳輸使用的SelectorHandler。如果未顯式設置任何值,則使用的SelectorHandler將是NIOTransportBuilder.DEFAULT_SELECTOR_HANDLER。有關SelectorHandler的詳細信息,請參見“傳輸和連接”部分。
selectionKeyHandler設置此傳輸要使用的SelectionKeyHandler。如果未顯式設置任何值,則使用的SelectionKeyHandler將為NIOTransportBuilder.DEFAULT_SELECTION_KEY_HANDLER。有關SelectionKeyHandler的詳細信息,請參見“傳輸和連接”部分。
attributeBuilder設置此傳輸使用的AttributeBuilder。如果未顯式設置任何值,則使用的AttributeBuilder將為NIOTransportBuilder.DEFAULT_ATTRIBUTE_BUILDER。
NIOChannelDistributor設置此傳輸使用的NIOChannelDistributor。有關NIOChannelDistributor的詳細信息,請參見“傳輸和連接”部分。
processor設置此傳輸使用的處理器。
processorSelector設置此傳輸使用的ProcessorSelector。
readBufferSize設置每個連接分配的緩沖區大小,以讀取傳入數據。
writeBuffersSize設置每次連接將應用的緩沖區大小,以寫入傳出數據。

TCPNIOTransportBuilder屬性

TCPNIOTransportBuilder屬性描述
clientSocketSoTimeout以毫秒為單位(客戶端模式),SO_TIMEOUT 以指定的超時 enable/disable SO_TIMEOUT。
connectionTimeout在建立連接之前可能花費的時間,超時時間(以毫秒為單位)。
keepAliveEnable/disable SO_KEEPALIVE.
linger使用指定的延遲時間(以秒為單位)啟用/禁用SO_LINGER。最大超時值(maximum timeout value)是特定于平臺的。該設置僅影響套接字關閉。
reuseAddress啟用/禁用SO_REUSEADDR套接字選項。當TCP連接關閉時,連接可能會在連接關閉后的一段時間內保持超時狀態(通常稱為TIME_WAIT狀態或2MSL等待狀態)。對于使用眾所周知的套接字地址或端口的應用程序,如果在超時狀態下存在涉及套接字地址或端口的連接,則可能無法將套接字綁定到所需的SocketAddress。
serverConnectionBacklog指定最大未建立連接隊列長度。
serverSocketSoTimeout以指定的時間 Enable/disable SO_TIMEOUT,以毫秒為單位(服務器模式)
tcpNoDelay啟用/禁用TCP_NODELAY(禁用/啟用Nagle算法)。
temporarySelectorIO允許指定TemporarySelectorIO實例,以幫助模擬阻塞IO。
optimizedForMultiplexing控制寫入連接的行為。如果啟用,則無論當前線程是否可以直接寫入連接,所有寫入都將傳遞到異步寫入隊列。當實際發生寫入時,傳輸將嘗試從寫入隊列中寫入盡可能多的內容。默認情況下禁用此選項。
maxAsyncWriteQueueSizeInBytes指定基于每個連接的異步寫入隊列的大小(以字節為單位)。如果未指定,則該值將配置為系統套接字寫緩沖區大小的四倍。將此值設置為-1將使隊列不受限制。

UDPNIOTransportBuilder屬性

UDPNIOTransportBuilder屬性描述
connectionTimeout在操作超時之前建立連接可能花費的時間(以毫秒為單位)。
reuseAddress啟用/禁用SO_REUSEADDR套接字選項。當TCP連接關閉時,連接可能會在連接關閉后的一段時間內保持超時狀態(通常稱為TIME_WAIT狀態或2MSL等待狀態)。對于使用眾所周知的套接字地址或端口的應用程序,如果在超時狀態下存在涉及套接字地址或端口的連接,則可能無法將套接字綁定到所需的SocketAddress。
temporarySelectorIO允許指定TemporarySelectorIO實例,以幫助模擬阻塞IO。

線程池配置

Grizzly的線程池配置由ThreadPoolConfig對象管理:

ThreadPoolConfig屬性描述
queue要使用的任務隊列實現。
queueLimit可以排隊的最大待處理任務數。
threadFactoryThreadFactory 是一個用于創建新的線程的線程池
poolName該線程池的名稱。
priority分配給每個線程的優先級。這將覆蓋由指定ThreadFactory分配的任何優先級。
corePoolSize初始化線程池時需要一起創建的線程的初始數量。
maxPoolSize該線程池可以維護的最大線程數
keepAliveTime線程可以保持空閑并等待新任務執行后釋放的最長時間??梢允褂米远x時間單位。
transactionTimeout在發送中斷信號之前,可能允許線程運行單個任務的最長時間。可以使用自定義時間單位。

線程池配置相當簡單。但是,應該注意,Grizzly在內部具有多個線程池實現:SyncThreadPool,FixedThreadPool和QueueLimitedThreadPool。選擇哪種實現取決于配置。以下各節描述了每個線程池實現

FixedThreadPool

當queueLimit屬性小于零且最大和核心池大小相同時,將選擇此池。在執行任務時,FixedThreadPool沒有同步,因此它提供了更好的性能。

QueueLimitedThreadPool

當queueLimit屬性大于零且最大和核心池大小相同時,將選擇此池。QueueLimitedThreadPool是FixedThreadPool的擴展,因此,如果不提供無限制的任務隊列,它就能提供與FixedThreadPool相同的優點。

SyncThreadPool

當其他線程池的標準都不適用時,將選擇此池。該線程池確實具有同步功能,可以對線程創建的決策進行精確控制。

例子

以下是一些使用TCPNIOTransportBuilder配置傳輸和/或線程池的示例。

final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); final TCPNIOTransport transport = builder.build();

使用所有默認配置值創建一個新的TCPNIOTransport。

final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); final TCPNIOTransport transport = builder.setIOStrategy(SameThreadIOStrategy.getInstance()).setTcpNoDelay(true).build();

使用SameThreadIOStrategy創建一個新的TCPNIOTransport實例,并將tcp-no-delay設置為true。請注意,配置調用可以鏈接。

final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); final ThreadPoolConfig config = builder.getWorkerThreadPoolConfig(); config.setCorePoolSize(5).setMaxPoolSize(5).setQueueLimit(-1); final TCPNIOTransport transport = builder.build();

由于沒有隊列限制并且核心池和最大池大小相同,因此本示例將配置TCPNIOTransport以使用FixedThreadPool實現。

總結

以上是生活随笔為你收集整理的Grizzly core configuration的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。