Semaphore类的使用
package com.example.demo;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
/**
* Created by Administrator on 2020/7/6.
* 多个线程抢多个资源--可用于加锁
* 作用:一个是用于多个共享资源的互斥使用,另一个用于高并发线程数的控制
*
* @author qtx
*/
public class SemaphoreDemo {
public static void main(String[] args) {
//模拟三个停车位
Semaphore semaphore = new Semaphore(3);
for (int i = 1; i <= 6; i++) {
new Thread(() -> {
try {
//如果抢占成功
semaphore.acquire();
System.out.println(Thread.currentThread().getName() + "\t抢到车位");
//停车时间
TimeUnit.SECONDS.sleep(3);
System.out.println(Thread.currentThread().getName() + "\t离开");
} catch (Exception e) {
e.printStackTrace();
} finally {
semaphore.release();
}
}).start();
}
}
}