執行緒池的理解及使用

2021-07-29 15:08:24 字數 1711 閱讀 8889

1.初識執行緒池:

根據系統自身的環境情況,有效的限制執行執行緒的數量,使得執行效果達到最佳。執行緒主要是通過控制執行的執行緒的數量,超出數量的執行緒排隊等候,等待有任務執行完畢,再從佇列最前面取出任務執行。

2.執行緒池作用:

減少建立和銷毀執行緒的次數,每個工作執行緒可以多次使用

可根據系統情況調整執行的執行緒數量,防止消耗過多記憶體

3.使用

executorservice:執行緒池介面

executorservice pool = executors.常見執行緒

eg:executorservice pool = executors.newsinglethreadexecutor();

4.常見執行緒池

①newsinglethreadexecutor

單個執行緒的執行緒池,即執行緒池中每次只有乙個執行緒工作,單執行緒序列執行任務

②newfixedthreadexecutor(n)

固定數量的執行緒池,沒提交乙個任務就是乙個執行緒,直到達到執行緒池的最大數量,然後後面進入等待佇列直到前面的任務完成才繼續執行

③newcachethreadexecutor(推薦使用)

可快取執行緒池,當執行緒池大小超過了處理任務所需的執行緒,那麼就會**部分空閒(一般是60秒無執行)的執行緒,當有任務來時,又智慧型的新增新執行緒來執行。

④newschedulethreadexecutor

大小無限制的執行緒池,支援定時和週期性的執行執行緒

5.例項

publicclass

mythread

extendsthread }

①newsinglethreadexecutor

publicclass

testsinglethreadexecutor  }

result:

pool-1-thread-1執行中。。。

pool-1-thread-1

執行中。。。

pool-1-thread-1

執行中。。。

pool-1-thread-1

執行中。。。

pool-1-thread-1

執行中。。。

②newfixedthreadexecutor(n)

publicclasstestfixedthreadpool }

result:

pool-1-thread-1

執行中。。。

pool-1-thread-2

執行中。。。

pool-1-thread-1

執行中。。。

pool-1-thread-2

執行中。。。

pool-1-thread-1

執行中。。。

③newcachethreadexecutor

publicclasstestcachedthreadpool }

result:

pool-1-thread-1

執行中。。。

pool-1-thread-2

執行中。。。

pool-1-thread-4

執行中。。。

pool-1-thread-3

執行中。。。

pool-1-thread-5

執行中。。。

執行緒池的理解及使用

1.初識執行緒池 根據系統自身的環境情況,有效的限制執行執行緒的數量,使得執行效果達到最佳。執行緒主要是通過控制執行的執行緒的數量,超出數量的執行緒排隊等候,等待有任務執行完畢,再從佇列最前面取出任務執行。2.執行緒池作用 減少建立和銷毀執行緒的次數,每個工作執行緒可以多次使用 可根據系統情況調整執...

執行緒池的理解

原來一直對執行緒池心存疑惑.第乙個疑惑是.執行緒類在例項化的時候就已經指定了run函式了,也就是說,乙個執行緒在例項化的時候,他能做什麼就已經定下來了,要做別的事,就要新開乙個執行緒.這感覺就和執行緒池的思想違背了,怎麼樣從執行緒池裡面拿乙個執行緒出來就可以執行呢?執行完了然後再放回去呢?第二個疑惑...

執行緒池的理解

1.為什麼要使用多執行緒?充分利用cpu資源,併發去做多個事情 2.單核cpu機器適不適合用多執行緒?適合,如果是單執行緒,執行緒中需要等待io,此時cpu就空閒出來了 3.執行緒什麼時候讓出cpu?阻塞時,wait,await,等待io,sleep,yield,結束了 4.執行緒是什麼?程序的最小...