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