parallelstream启动的线程数_高并发与多线程网络学习笔记(三)线程组和线程池
生活随笔
收集整理的這篇文章主要介紹了
parallelstream启动的线程数_高并发与多线程网络学习笔记(三)线程组和线程池
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
線程組
線程組的作用是:可以批量管理線程或線程組對象,有效地對線程或線程組對象進行組織。
構造函數
ThreadGroup(String name)//默認parent為當前線程組 ThreadGroup(ThreadGroup parent, String name)具體方法
//評估當前活躍的線程數,包括當前group和子group //不準確因為有可能剛好有新線程加入或銷毀 activeCount() //返回當前活躍的子線程組 activeGroupCount() //用于銷毀線程組及其所有子組。 線程組必須為空,表示線程組中的所有線程都已停止,否則會拋出異常 //它不能作為線程退出的方法 destroy() //復制當前線程組包括子組的線程到數組中,如果recurse=false,則不復制子組 enumerate(Thread[] list) enumerate(Thread[] list, boolean recurse) //返回當前線程組名字 getName() //獲得父線程組 getParent() //打斷所有線程 interrupt() //等所有線程運行完成后會自動銷毀,不需要手動調用destroy() setDaemon(boolean daemon) //標志位判斷函數 isDaemon() isDestroyed() parentOf(ThreadGroup g)作用
- 通過ThreadGroup的activeCount獲取當前活躍的線程
- 通過ThreadGroup的interrupt方法中斷所有的線程
線程池
線程的創建和銷毀需要消耗資源,所以通過線程池,用完的線程可以及時回收供其他程序使用,節約了創建和銷毀的浪費。
課程里面這一部分并沒有介紹并發包中的線程池知識,第三部分才會教,這里是手寫線程池。
線程池的初始化
- 初始化一定數量線程,進入阻塞狀態,等待任務。通過線程隊列管理
- 啟動線程池自身監控線程
任務調度
- 任務放入任務隊列,并通知線程開始取任務工作
- 任務隊列的放入和取出需要加鎖
拒絕策略
- 當任務隊列過長時,可以做出選擇,拋出異常,直接丟棄,阻塞,臨時隊列
閑時回收和忙時擴增
- init--初始大小,active--活躍大小,max--最大線程數
- 通過啟動線程池的一個監控程序,實時對線程隊列進行擴增或縮小
線程關閉
- run狀態下,通過標志位改變使線程結束
- block狀態下,通過interrupt讓線程捕獲異常使線程結束
總結
以上是生活随笔為你收集整理的parallelstream启动的线程数_高并发与多线程网络学习笔记(三)线程组和线程池的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python怎么返回上一行代码_一行Py
- 下一篇: MATLAB求线性代数的参数范围,MAT