建立執行緒池注意

2021-10-08 04:58:55 字數 2352 閱讀 3609

1、

threadfactory namedthreadfactory = new threadfactorybuilder()

.setnameformat("demo-pool-%d").build();

executorservice singlethreadpool = new threadpoolexecutor(1, 1,

0l, timeunit.milliseconds,

new linkedblockingqueue(1024), namedthreadfactory, new threadpoolexecutor.abortpolicy());

singlethreadpool.execute(()-> system.out.println(thread.currentthread().getname()));

singlethreadpool.shutdown();

public class timertaskthread extends thread

2、說明:executors返回的執行緒池物件的弊端如下:

1)fixedthreadpool和singlethreadpool:

允許的請求佇列長度為integer.max_value,可能會堆積大量的請求,從而導致oom。

2)cachedthreadpool:

允許的建立執行緒數量為integer.max_value,可能會建立大量的執行緒,從而導致oom。

positive example 1:

scheduledexecutorservice executorservice = new scheduledthreadpoolexecutor(1,

new basicthreadfactory.builder().namingpattern("example-schedule-pool-%d").daemon(true).build());

positive example 2:

threadfactory namedthreadfactory = new threadfactorybuilder()

.setnameformat("demo-pool-%d").build();

//common thread pool

executorservice pool = new threadpoolexecutor(5, 200,

0l, timeunit.milliseconds,

new linkedblockingqueue(1024),

namedthreadfactory,

new threadpoolexecutor.abortpolicy());

pool.execute(()-> system.out.println(thread.currentthread().getname()));

pool.shutdown();//gracefully shutdown

positive example 3:

//in code

userthreadpool.execute(thread);

3、說明:

使用執行緒池的好處是減少在建立和銷毀執行緒上所花的時間以及系統資源的開銷,解決資源不足的問題。

如果不使用執行緒池,有可能造成系統建立大量同類執行緒而導致消耗完記憶體或者「過度切換」的問題。

threadfactory namedthreadfactory = new threadfactorybuilder()

.setnameformat("demo-pool-%d").build();

executorservice singlethreadpool = new threadpoolexecutor(1, 1,

0l, timeunit.milliseconds,

new linkedblockingqueue(1024),

namedthreadfactory,

new threadpoolexecutor.abortpolicy());

singlethreadpool.execute(()-> system.out.println(thread.currentthread().getname()));

singlethreadpool.shutdown();

執行緒池建立

executors執行緒池建立,主要包含以下幾種方式 1 第一種 測試 提交15個執行時間需要3秒的任務,看執行緒池的狀況 param threadpoolexecutor 傳入不同的執行緒池,看不同的結果 throws exception public void testcommon thread...

執行緒池 Executors類建立執行緒池

executors靜態工廠建立幾種常用執行緒池 1.建立了乙個固定執行緒數量的執行緒池,可以控制線程最大併發數,超出的執行緒會在佇列中等待。newfixedthreadpool int nthreads 執行緒池中線程數量是要指定傳入的,注意在固定大小的執行緒池中使用的阻塞佇列是linkedbloc...

執行緒池建立方式及執行緒池原理

執行緒池提交任務時的執行順序如下 向執行緒池提交任務時,會首先判斷執行緒池中的執行緒數是否大於設定的核心執行緒數,如果不大於,就建立乙個核心執行緒來執行任務。如果大於核心執行緒數,就會判斷緩衝佇列是否滿了,如果沒有滿,則放入佇列,等待執行緒空閒時執行任務。如果佇列已經滿了,則判斷是否達到了執行緒池設...