我已經通過這個騾子線程檔案的poolExhaustedAction - RUN
- http://www.mulesoft.org/documentation/display/34X/Tuning+Performance#TuningPerformance-ThreadingProfileConfigurationReference
- Mule poolExhaustedAction
了我身邊有RUN
poolExhaustedAction一些混亂。
如果poolExhaustedAction設置爲RUN
並且池中沒有可用的線程,請求接收方線程是否會繼續流?如果是這樣,這是一個同步處理?
編輯:假設我有像騾流配置:
- 流處理策略是異步的。
- 的
Receiver
,Flow
和Dispatcher
線程池大小爲1 最後的
Receiver
的poolExhaustedAction
和Dispatcher
是RUN
。通過上面提到的配置,我的問題如下所示:想象Flow線程池已用盡,並且來自Receiver池的(僅一個)線程接收到來自客戶端的新請求。這個接收器線程會繼續進行流程處理還是等待?如果我理解正確,接收線程不會等待,因爲其
poolExhaustedAction
設置爲RUN
。那麼這不是一個同步處理形式的接收線程的角度?那麼設置asynchronous
的處理策略有什麼用?
現在我已經改變了上述結構,使得Dispatcher's
poolExhaustedAction
設置爲WAIT
。上述接收者線程是否等待調度程序線程?我不這麼認爲。
請澄清我的疑問。提前致謝。
@ user1760178,謝謝你的解釋。我仍然感到困惑,假設我這樣配置了:流線程池大小爲1,接收者線程池大小爲1,處理策略爲異步。現在想象一下,流線程池已經耗盡。如果流線程poolExhaustedAction爲'RUN',接收者線程是否繼續處理流?如果是這樣,從接收線程的角度來看,處理看起來是同步的嗎? – 2014-11-24 18:23:36
情況並非如此。即使你說只有一個接收者線程存在。只有在所有流線程仍在處理的情況下,接收線程纔開始處理。這意味着接收者線程不是該流程中請求處理過程中唯一的線程。並且對於同步,可以在任何時間點在流中處理theread,並且它應該是唯一可以處理該流的請求的線程。即使線程不併發,也不會有兩個線程用於同步流。 – user1760178 2014-11-24 19:56:38
你能否看到問題的編輯部分,並提供澄清? – 2014-11-25 02:03:10