官术网_书友最值得收藏!

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 運行結果

主站蜘蛛池模板: 洞头县| 云南省| 额尔古纳市| 陵川县| 台北县| 吴旗县| 马关县| 绍兴市| 望奎县| 门头沟区| 兰州市| 襄樊市| 兰溪市| 裕民县| 黄梅县| 松溪县| 密云县| 青神县| 平阳县| 甘谷县| 德钦县| 曲松县| 大新县| 汕尾市| 宕昌县| 盐池县| 奎屯市| 孙吴县| 龙里县| 教育| 仙居县| 綦江县| 武功县| 仪征市| 蒙阴县| 诏安县| 错那县| 外汇| 东阿县| 客服| 天气|