java 線程分組_Java多線程可以分組,還能這樣玩!

前面的文章,棧長和大家分享過多線程創建的3種方式《實現 Java 多線程的 3 種方式》。

但如果線程很多的情況下,你知道如何對它們進行分組嗎?

和 Dubbo 的服務分組一樣,Java 可以對相同性質的線程進行分組。

來看下線程類 Thread 的所有構造方法。

9061041.jpg

如圖所示,帶有 ThreadGroup 的所有線程構造方法都可以定義線程組的。

線程組使用 java.lang.ThreadGroup 類定義,它有兩個構造方法,第二個構造方法允許線程組有父類線程組,也就是說一個線程組可以多個子線程組。

java.lang.ThreadGroup#ThreadGroup(java.lang.String)

java.lang.ThreadGroup#ThreadGroup(java.lang.ThreadGroup, java.lang.String)

38415499.jpg

線程組中比較有用的幾個方法。

// 獲取當前線程組內的運行線程數

java.lang.ThreadGroup#activeCount

// 中斷線程組內的所有線程

java.lang.ThreadGroup#interrupt

// 使用 System.out 打印出所有線程信息

java.lang.ThreadGroup#list()

我們來簡單使用下線程組吧!

/**

* 微信公眾號:Java技術棧

*/

public static void main(String[] args) {

Runnable runnable = () -> {

System.out.println("Java技術棧線程線程組名稱:" + Thread.currentThread().getThreadGroup());

System.out.println("Java技術棧線程線程名稱:" + Thread.currentThread().getName());

try {

Thread.sleep(3000);

} catch (InterruptedException e) {

e.printStackTrace();

}

};

ThreadGroup userGroup = new ThreadGroup("user");

userGroup.setMaxPriority(Thread.MIN_PRIORITY);

Thread userTask1 = new Thread(userGroup, runnable, "user-task1");

Thread userTask2 = new Thread(userGroup, runnable, "user-task2");

userTask1.start();

userTask2.start();

System.out.println("Java技術棧線程線程組活躍線程數:" + userGroup.activeCount());

userGroup.list();

}

程序輸出以下結果。

Java技術棧線程線程組名稱:java.lang.ThreadGroup[name=user,maxpri=1]

Java技術棧線程線程名稱:user-task1

Java技術棧線程線程組活躍線程數:2

Java技術棧線程線程組名稱:java.lang.ThreadGroup[name=user,maxpri=1]

Java技術棧線程線程名稱:user-task2

java.lang.ThreadGroup[name=user,maxpri=1]

Thread[user-task1,1,user]

Thread[user-task2,1,user]

根據示例代碼和程序輸出結果應該對線程組有了一個大概的了解吧。

線程組還能統一設置組內所有線程的最高優先級,線程單獨設置的優先級不會高于線程組設置的最大優先級。

另外,線程組中有一個 stop 方法用來終止組內所有的線程,但這個方法和 Thread 中的 stop 方法一樣會帶來很多問題,所以它們兩個現在都已經被廢棄了,官方也是不建議使用了,建議使用線程中斷功能進行優雅終止線程。

更多 Java 多線程技術文章請在微信公眾號后臺回復關鍵字:多線程。

本文原創首發于微信公眾號:Java技術棧(id:javastack),關注公眾號在后臺回復 “java” 可獲取更多,轉載請原樣保留本信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540012.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540012.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540012.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于Android構建

“IDE都是給小白程序員的,大牛級別的程序員一定是命令行控,終端控,你看大牛都是使用vim,emacs 就一切搞定” 這話說的雖然有些絕對,但是也不無道理,做開發這行要想效率高,自動化還真是缺少不了命令行工具&a…

普元EOS開發學習(二)

1、QueryFormQueryForm控件是一個用來輸入查詢條件的表單&#xff0c;作為一個代碼片斷&#xff0c;以<h:form></h:form>形式嵌入在JSP頁面中。表單提交時&#xff0c;根據控件生成時設置的邏輯&#xff0c;可以對指定數據集進行有條件查詢&#xff0c;同時可以根據…

java map class_Java:聲明一個包含兩個相關泛型類型的Map(Map,Class ?extends ClassB )...

另一種方法是提供自己的Map實現.如果擴展現有實現并使用新類型,則不需要太多代碼&#xff1a;public class CompatibleHashMap extends HashMap, ClassB> {}現在,一個CompatibleHashMap< String>只允許你把ClassA< String>作為鍵和ClassB< String>作為價值…

centos 6 安裝zabbix 3.0

1.安裝PHP Zabbix 3.0對PHP的要求最低為5.4&#xff0c;而CentOS6默認為5.3.3&#xff0c;完全不滿足要求&#xff0c;故需要利用第三方源&#xff0c;將PHP升級到5.4以上&#xff0c;注意&#xff0c;不支持PHP7 rpm -ivh http://repo.webtatic.com/yum/el6/latest.rpm yum in…

普元EOS開發學習(一)

警惕EOS的拖圖元開發導致技術退步&#xff0c;請閱博主《用了2年EOS后的感受》 --------------- EOS開發和原有的JAVA開發有很大的不同&#xff0c;在開發的過程中&#xff0c;只能看到JSP頁面的源代碼&#xff0c;如果想要了解到操作類型的代碼&#xff0c;那么你只能看到XML…

java 共享鎖 獨占鎖_java中的公平鎖、非公平鎖、可重入鎖、遞歸鎖、自旋鎖、獨占鎖和共享鎖...

一、公平鎖與非公平鎖1.1 概述公平鎖&#xff1a;是指多個線程按照申請鎖的順序來獲取鎖。非公平鎖&#xff1a;是指在多線程獲取鎖的順序并不是按照申請鎖的順序&#xff0c;有可能后申請的線程比先申請的線程優先獲取到鎖&#xff0c;在高并發的情況下&#xff0c;有可能造成…

GoogleNet網絡分析與demo實例

參考自 up主的b站鏈接&#xff1a;霹靂吧啦Wz的個人空間-霹靂吧啦Wz個人主頁-嗶哩嗶哩視頻這位大佬的博客 Fun_機器學習,pytorch圖像分類,工具箱-CSDN博客 1. GoogLeNet網絡詳解 GoogLeNet在2014年由Google團隊提出&#xff08;與VGG網絡同年&#xff0c;注意GoogLeNet中的L大…

解決win10安卓虛擬機每十幾分鐘藍屏重啟問題

2012年第一次接觸android&#xff0c;它的虛擬機是很慢的&#xff0c;如今Intel HAXM 技術為 Android 模擬器加速&#xff0c; 使模擬器運行度媲美真機&#xff0c; 徹底解決模擬器運行慢的問題。問題也是由它而來&#xff0c;因為驅動和系統不兼容造成的。 CPU必須I3及I3以上才…

pg_resetxlog清理的pg_xlog下的WAL日志

PostgreSQL的pg_xlog下有大量日志&#xff0c;空間不足&#xff0c;如何刪除&#xff1f; Darren1:postgres:/usr/local/pgsql/data/pg_xlog:>ls 000000010000000000000008.00000028.backup 00000001000000000000009D 0000000100000000000000C9 0000000100000000000000F5…

mysql備份:一,Xtrabackup

資料來自于馬哥 注明&#xff1a;此工具不能備份出sql語句。另外只能適用innodb存儲引擎。 一、安裝 1、簡介 Xtrabackup是由percona提供的mysql數據庫備份工具&#xff0c;據官方介紹&#xff0c;這也是世界上惟一一款開源的能夠對innodb和xtradb數據庫進行熱備的工具。特點&…

51服務的開啟方式

服務開啟方式的知識點見博文&#xff1a;http://blog.csdn.net/zengmingen/article/details/49425161步驟&#xff1a; 1、新建Android項目名“51服務的開啟方式” 2、新建一個類 MyService&#xff0c;繼承 Service 3、在清單文件里配置第二步建的service 4、在Myservice類中覆…

java mysql 存儲圖片_Java存儲圖片到Mysql

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓【1】視圖層action"${ctx}/web/UserInforServlet?methoduserInforServlet" >更換頭像立即提交重置var layer,upload,form;//1-頁面數據加載$(function () {//【1】加載&初始化layui模塊-彈出層與table數據表格la…

JavaWeb應用配置文件安全解決方案

這里主要說說JavaWeb應用的配置文件安全&#xff0c;通常JavaWeb應用多多少少會有一些配置文件&#xff0c;其中數據源的配置則是關系到數據庫的安全&#xff0c;另外還有一些基于文件的權限配置&#xff0c;應用程序的一些系統參數。鑒于這樣的情況&#xff0c;如果配置文件被…

java 免費cms_開源 免費 java CMS

Bug修復:1.菜單管理&#xff1a;刪除操作按鈕后不能直接進行刪除菜單操作。2.刪除單位時操作記錄不顯示單位名稱問題。3.站點管理&#xff1a;改變所屬站點增加改變為一級站點功能&#xff0c;上傳非圖片logo時雖然提示但仍上傳成功問題。4.模板文件管理&#xff1a;點擊查看/下…

Android加載大圖片不OutOfMemoryError

Android加載圖片時&#xff0c;對于分辨率小&#xff0c;配置低的機子&#xff0c;很容易發生OutOfMemoryError。手機的內存比圖片的大很多&#xff0c;怎么會這樣&#xff1f; 在設置Android虛擬機的內存時&#xff1a; RAM&#xff1a;模擬器的內存空間 VM Heap&#xff1a;…

任務計劃、chkconfig工具、systemd管理服務、unit、target

比如備份數據或者重啟服務。 crontab -u、-e、-l、-r&#xff08;刪除&#xff09; 格式&#xff1a;分 時 日 月 周 user command 文件/var/spool/cron/username 分范圍0-59&#xff0c;時范圍0-23&#xff0c;日范圍1-31&#xff0c;月范圍1-12&#xff0c;周1-7 可用格式1-5…

vue打卡日歷_Vue日歷

new Vue({el: ‘#calendar‘,data: {currentDay: 1,currentMonth: 1,currentYear: 1970,currentWeek: 1,days: [],addDay: [],},created: function() {this.initData(null);var $this this;//請求數據$.ajax({url: "這里填接口名稱",type: "POST",data: {…

android Intent機制詳解

原文出處&#xff1a;http://blog.csdn.net/t12x3456/article/details/7688154 什么是Intent Intent是一種運行時綁定&#xff08;run-time binding&#xff09;機制&#xff0c;它能在程序運行過程中連接兩個不同的組件。通過Intent&#xff0c;你的程序可以向Android表達某種…

python基本數據類型(四)-集合與運算符-python3筆記

1.集合 2.字典 3.運算符優先級 1.集合 創建&#xff1a;() set() 注意&#xff1a;創建空的集合要用set() 特點&#xff1a;元素唯一&#xff0c;無序 運算&#xff1a; &&#xff08;交集&#xff09; |&#xff08;并集&#xff09; -&#xff08;差集&#xff0…

Android的權限

Android有四種權限&#xff1a; 1、Permission 權限 2、Root權限 3、Bootloader的解鎖 4、Radio(基帶)解鎖 ------------------------------------ 1、Permission 我們在開發中經常使用到 Permission 權限&#xff0c;即一系列"Android.Permission.*"對象。…