semaphore也继承自waithandle,它用于锁机制,与Mutex不同的是,它允许指定数量的线程同时访问资源,在线程超过数量以后,则进行排队等待,直到之前的线程退出。
Semaphore很合适利用于web服务器这样的高并发场景,可以限制对资源访问的线程数。
Monitor与monitor都有1个锁持有者,而semaphore则不需要,因此通常将sempahore声明为静态的。
来看下面的示例:
调用结果:
假想下,如果有1个抢票的页面,所有人同1时刻并发访问,可以用此对象设置好并发的人数和同时可以有多少人进入等待状态。其他人可以排到1个队列中,如果队列太长的话,会造成服务器内存消耗过量,这时候,可以采取散布式的方法,把队列分配到不同的主机上,减轻服务器压力。
以上假想还未在实践中使用过,但是学习了两天如何处理高并提问题,这也算是理出来的1个思路吧。
上一篇 灰度图像--频域滤波 滤波器
下一篇 JDK更换导致以前软件不能运行