A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xgm 中级黑马   /  2016-3-17 20:11  /  334 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. * 目的:了解信号灯
  2. *x信号灯的作用:
  3. *                控制一次运行线程的数量
  4. */
  5. public class SemaphoreTest {

  6.         public static void main(String[] args) {
  7.                
  8.                 ExecutorService threadPool = Executors.newCachedThreadPool();
  9.                 final Semaphore semaphore = new Semaphore(3);   //定义一个有三个信号的Semaphore
  10.                
  11.                 for(int i=0;i<7;i++){
  12.                         Runnable runnable = new Runnable(){
  13.                                 public void run() {
  14.                                         try {
  15.                                                 semaphore.acquire();  //每获取一次信号灯,信号灯的数量就减一。
  16.                                                                                                 //如果没有了信号灯,线程等待其他线程释放信号灯
  17.                                                 //Thread.sleep(2000);
  18.                                             System.out.println(Thread.currentThread().getName()+":正在运行,"+
  19.                                                                                         "目前可利用的信号灯为:"+semaphore.availablePermits());
  20.                                            Thread.sleep(4000);
  21.                                            System.out.println(Thread.currentThread().getName()+":即将离开");
  22.                                         }catch (InterruptedException e) {
  23.                                                 e.printStackTrace();
  24.                                         }finally{
  25.                                                 semaphore.release();   //释放信号灯,信号灯的数量加一
  26.                                         }
  27.                                 }
  28.                         };
  29.                         threadPool.execute(runnable);
  30.                 }
  31.                 threadPool.shutdown();
  32.         }
  33. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马