Java Semaphore

描述

运用 Java Semaphore 控制并发线程的数量。

题目

请使用 Semaphore 编写一个程序,实现控制游客参观数量。

要求:模拟有 5 个游客参观,但最多只能允许 2 个游客同时参观。

题目解决思路

  1. 创建 Semaphore ,并设置并发数为 2。
  2. 使用 匿名内部类 的方式创建线程,重写 run 方法。
  3. 每个游客需要使用 acquire 方法获取参观权。
  4. 每个游客参观完毕后需要使用 release 方法释放参观权。

代码具体实现

public class Test { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)\n"); Semaphore semaphore = new Semaphore(2); for (int i = 0; i < 5; i++) { new Thread(new Runnable() { @Override public void run() { try { // 获得参观权 semaphore.acquire(); System.out.println(Thread.currentThread().getName() + " 开始参观:" + new Date()); // 参观2秒 Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } finally { //释放参观权 semaphore.release(); } } },"Thread " + i).start(); } } }

运行结果如下图:

20 Java Semaphore.png

以上案例运用 Java Semaphore 控制并发线程的数量 。