Java實現(xiàn)監(jiān)控多個線程狀態(tài)的簡單實例
實例如下:
import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.Executors; /** * 測試監(jiān)控類 * * @author * */ public class WatchThread { /** * 測試函數(shù) * * @throws InterruptedException */ public void testThread() throws InterruptedException { int threadNum = 10; // 初始化countDown CountDownLatch threadSignal = new CountDownLatch(threadNum); // 創(chuàng)建固定長度的線程池 Executor executor = Executors.newFixedThreadPool(threadNum); for (int i = 0; i < threadNum; i++) { // 開threadNum個線程 Runnable task = new TestThread(threadSignal); // 執(zhí)行 executor.execute(task); } threadSignal.await(); // 等待所有子線程執(zhí)行完 // do work System.out.println(Thread.currentThread().getName() + "+++++++結(jié)束."); } /** * 測試函數(shù) */ public static void main(String[] args) throws InterruptedException { WatchThread test = new WatchThread(); test.testThread(); } /** * * @author jill * */ private class TestThread implements Runnable { private CountDownLatch threadsSignal; public TestThread(CountDownLatch threadsSignal) { this.threadsSignal = threadsSignal; } public void run() { System.out.println(Thread.currentThread().getName() + "開始..."); // do shomething System.out.println("開始了線程::::" + threadsSignal.getCount()); // 線程結(jié)束時計數(shù)器減1 threadsSignal.countDown(); //這句代碼 建議放在 finally里執(zhí)行 System.out.println(Thread.currentThread().getName() + "結(jié)束. 還有" + threadsSignal.getCount() + " 個線程"); } } }
以上這篇Java實現(xiàn)監(jiān)控多個線程狀態(tài)的簡單實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis入門指南之實現(xiàn)對數(shù)據(jù)庫增刪改查
數(shù)據(jù)持久層主要負責(zé)數(shù)據(jù)的增、刪、改、查等功能,MyBatis 則是一款優(yōu)秀的持久層框架,下面這篇文章主要給大家介紹了關(guān)于Mybatis入門指南之實現(xiàn)對數(shù)據(jù)庫增刪改查的相關(guān)資料,需要的朋友可以參考下2022-10-10IDEA最新激活碼2021(IDEA2020.3.2最新永久激活方法)
這篇文章主要介紹了IDEA最新激活碼2021(IDEA2020.3.2最新永久激活方法),本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Springboot+Poi導(dǎo)入Excel表格實現(xiàn)過程詳解
這篇文章主要介紹了Springboot+Poi導(dǎo)入Excel表格實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09java中線程的sleep()方法和yield()方法的區(qū)別
本文主要介紹了java中線程的sleep()方法和yield()方法的區(qū)別,Thread類的sleep()方法使線程休眠指定時間,不釋放鎖,而yield()提示調(diào)度器當前線程愿意讓出CPU資源,不保證立即切換線程,感興趣的可以了解一下2024-10-10Java8中的LocalDateTime和Date一些時間操作方法
這篇文章主要介紹了Java8中的LocalDateTime和Date一些時間操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04IDEA調(diào)試功能使用總結(jié)(step?over/step?into/force?step?into/step?o
本文主要介紹了IDEA調(diào)試功能使用總結(jié)(step?over/step?into/force?step?into/step?out),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07SpringBoot實現(xiàn)郵件發(fā)送功能的姿勢分享
我們在日常開發(fā)中,經(jīng)常會碰到email郵件發(fā)送的場景,如發(fā)送驗證碼,向客戶發(fā)送郵件等等,這篇文章主要給大家介紹了關(guān)于SpringBoot實現(xiàn)郵件發(fā)送的相關(guān)資料,需要的朋友可以參考下2021-08-08Java生成日期時間存入Mysql數(shù)據(jù)庫的實現(xiàn)方法
本文主要介紹了Java生成日期時間存入Mysql數(shù)據(jù)庫的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03