- Java并發編程:核心方法與框架
- 高洪巖
- 291字
- 2019-01-03 02:34:14

1.1.6 方法getQueueLength()和hasQueuedThreads()
方法getQueueLength()的作用是取得等待許可的線程個數。
方法hasQueuedThreads()的作用是判斷有沒有線程在等待這個許可。
這兩個方法通常都是在判斷當前有沒有等待許可的線程信息時使用。
創建測試用的項目twoMethodTest,類MyService.java代碼如下:
package myservice; import java.util.concurrent.Semaphore; public class MyService { private Semaphore semaphore = new Semaphore(1); public void testMethod() { try { semaphore.acquire(); Thread.sleep(1000); System.out.println("還有大約" + semaphore.getQueueLength() + "個線程在等待"); System.out.println("是否有線程正在等待信號量呢?" + semaphore. hasQueuedThreads()); } catch (InterruptedException e) { e.printStackTrace(); } finally { semaphore.release(); } } }
類MyThread.java代碼如下:
package extthread; import myservice.MyService; public class MyThread extends Thread { private MyService myService; public MyThread(MyService myService) { super(); this.myService = myService; } @Override public void run() { myService.testMethod(); } }
類Run.java代碼如下:
package test.run; import myservice.MyService; import extthread.MyThread; public class Run { public static void main(String[] args) { MyService service = new MyService(); MyThread firstThread = new MyThread(service); firstThread.start(); MyThread[] threadArray = new MyThread[4]; for (int i = 0; i < 4; i++) { threadArray[i] = new MyThread(service); threadArray[i].start(); } } }
程序運行后的效果如圖1-14所示。線程的個數呈遞減的狀態。

圖1-14 運行結果
推薦閱讀
- 摩登創客:與智能手機和平板電腦共舞
- Practical Internet of Things Security
- Three.js開發指南:基于WebGL和HTML5在網頁上渲染3D圖形和動畫(原書第3版)
- FLL+WRO樂高機器人競賽教程:機械、巡線與PID
- Node Cookbook(Second Edition)
- Web前端應用開發技術
- Visual Basic 6.0程序設計實驗教程
- Visual Basic程序設計(第三版)
- Shopify Application Development
- 你必須知道的.NET(第2版)
- Java EE程序設計與開發實踐教程
- LabVIEW數據采集(第2版)
- Learning Puppet
- 編程風格:程序設計與系統構建的藝術(原書第2版)
- Python程序設計案例教程:從入門到機器學習(微課版)