信号量在哪里使用?

时间:2015-03-02 09:01:03

标签: java concurrency

我已经阅读了Semaphore课程there,现在我想了解的是如何在实际代码中使用该课程?信号量的用处是什么?我得到了可以使用信号量的东西,以提高性能,减少资源的并发性。它是Semaphore的主要用途吗?

2 个答案:

答案 0 :(得分:1)

tl; dr答案:信号量允许您限制对某些线程的某些代码路径的访问 - 而无需控制处理这些线程的机制。示例用例是一个提供一些资源密集型任务的Web服务 - 使用信号量,您可以将该任务限制为5个线程,同时使用应用服务器的较大线程池处理此请求和其他类型的请求。

答案很长:参见Furkan Omay的评论。

答案 1 :(得分:1)

信号量是java中并发包的一部分。因此,正如软件包所说,它用于利用代码的并发访问流。与使用信号量的java中的“同步”和“锁定”不同,您可以控制代码对特定数量用户的访问。

将其视为酒吧中的保镖,允许人们进入或不进入。如果酒吧已满,不能再吸引更多的人,他会停下来直到有人离开。信号量可用于对您的代码执行类似的操作!!

希望它有所帮助!!