运用 Java Semaphore 控制并发线程的数量。
请使用 Semaphore 编写一个程序,实现控制游客参观数量。
要求:模拟有 5 个游客参观,但最多只能允许 2 个游客同时参观。
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();
}
}
}
运行结果如下图:
以上案例运用 Java Semaphore 控制并发线程的数量 。