Semaphore和RateLimiter有什么区别?

来源:6-3 J.U.C之AQS-Semaphore

蝙蝠之殇

2018-05-31

老师,Semaphore和RateLimiter根据他们的特性,都是可以用来限制并发,那么这两者有什么区别呢?

写回答

1回答

Jimin

2018-05-31

你好,Semaphore:信号量,直译很难理解。作用是限定只有抢到信号的线程才能执行,其他的都得等待!你可以设置N个信号,这样最多可以有N个线程同时执行。注意,其他的线程也在,只是挂起了。

RateLimiter是guava的,直译是速率限制器。其作用是 限制一秒内只能有N个线程执行,超过了就只能等待下一秒。注意,N是double类型。

前者控制的是同一时刻同时运行的线程数目,后者控制的是1s内允许执行的次数,效果上是不同的。

0
6
蝙蝠之殇
回复
Jimin
这个我有印象,不过当时只说要控制次数,限流,并没有说具体使用哪种方式比较好
2018-05-31
共6条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程