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.執行緒是什麼?程序的最小...