我正在閱讀有關(guān)Executors.newWorkStealingPool 的內(nèi)容,并且想知道如何設(shè)置它。我的線程將從LinkedBlockingQueue中拉出,因此將連續(xù)運(yùn)行(除非在“take”調(diào)用處被阻止)。假設(shè)我不知道運(yùn)行此代碼的主機(jī)上將提供多少個(gè)內(nèi)核。我如何知道要添加多少個(gè) Runnable 對象實(shí)例?Runnable processRecord = () -> { try { consumeRecord(blockingQueue.take()); } catch (InterruptedException e) { e.printStackTrace(); }public void setup() { ExecutorService workPool = Executors.newWorkStealingPool();-----> 我傳入了多少個(gè)線程實(shí)例? workPool.submit(processRecord);}更有可能的是 - 我如何(正確)使用這個(gè)線程構(gòu)造?
1 回答

慕的地10843
TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
Runnables
提交到工作竊取池 ( ForkJoinPool
) 會執(zhí)行一次(就像在任何其他線程池中一樣)。
對于示例實(shí)現(xiàn),processRecord
您需要為中的每個(gè)元素提交一個(gè)blockingQueue
添加回答
舉報(bào)
0/150
提交
取消