日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

parallelstream启动的线程数_高并发与多线程网络学习笔记(三)线程组和线程池

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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方法中斷所有的線程
public class ThreadGroupDemo2 {static class SleepTask implements Runnable {@Overridepublic void run() {try {TimeUnit.HOURS.sleep(1);// 休眠1小時} catch (InterruptedException e) {//ignore}}}public static void main(String[] args) {ThreadGroup threadGroup = new ThreadGroup("group");Thread thread1 = new Thread(threadGroup, new SleepTask(), "thread1");Thread thread2 = new Thread(threadGroup, new SleepTask(), "thread2");//activeCount方法用于返回當前活躍的線程,因為剛創建時2個線程都沒有啟動因此返回0assert threadGroup.activeCount() == 0;thread1.start();thread2.start();//線程組中的2個線程都啟動了,active為2assert threadGroup.activeCount() == 2;threadGroup.interrupt();//中斷之后,active為0assert threadGroup.activeCount() == 0;} }ThreadGroup_Java并發編程教程_田守枝Java技術博客?www.tianshouzhi.com

線程池

線程的創建和銷毀需要消耗資源,所以通過線程池,用完的線程可以及時回收供其他程序使用,節約了創建和銷毀的浪費。

課程里面這一部分并沒有介紹并發包中的線程池知識,第三部分才會教,這里是手寫線程池。

線程池的初始化

  • 初始化一定數量線程,進入阻塞狀態,等待任務。通過線程隊列管理
  • 啟動線程池自身監控線程

任務調度

  • 任務放入任務隊列,并通知線程開始取任務工作
  • 任務隊列的放入和取出需要加鎖

拒絕策略

  • 當任務隊列過長時,可以做出選擇,拋出異常,直接丟棄,阻塞,臨時隊列

閑時回收和忙時擴增

  • init--初始大小,active--活躍大小,max--最大線程數
  • 通過啟動線程池的一個監控程序,實時對線程隊列進行擴增或縮小

線程關閉

  • run狀態下,通過標志位改變使線程結束
  • block狀態下,通過interrupt讓線程捕獲異常使線程結束

總結

以上是生活随笔為你收集整理的parallelstream启动的线程数_高并发与多线程网络学习笔记(三)线程组和线程池的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。