我们从以下几点学习信号量
1、信号量的作用,信号量是用来做什么的?
- 它维护了一个许可集,我们在初始化时需要传一个许可集数量,该数量值代表同一时间能访问共享资源的线程数量。
- 线程可以通过acquire()方法得到一个许可,然后对共享资源进行操作,如果许可集已经用完了,哪线程在这里等待,直到其他线程释放,它才有机会再次获得许可。线程释放通过release完成,“许可才能归还给semaphore”
- 简单的理解为我这里有10个车位,每次过来最多有10辆车可以同时停车,当走了一辆车以后,我们才能停新的车辆!
2、例子?
private static ExecutorService executor = new ThreadPoolExecutor(10,20,20, TimeUnit.MINUTES, new ArrayBlockingQueue<>(10));
static class SameTest implements Runnable {
Semaphore phore