今天学juc的时候,发现了Semaphore,这个在学操作系统pv操作的时候有讲过,但是不知道怎么用,先记录一下。
public class SemaphoreDemo {
public static void main(String[] args) {
//信号量的值,表示最多可以多少个线程
Semaphore semaphore = new Semaphore(4);
for (int i = 0; i < 7; i++) {
new Thread(()->{
try {
//得到资源
semaphore.acquire();
System.out.println(Thread.currentThread().getName()+"抢到车位");
TimeUnit.SECONDS.sleep(2);
System.out.println(Thread.currentThread().getName()+"释放车位");
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
//释放资源
semaphore.release();
}
}).start();
}
}
}
输出结果: