同步与信号量

2022-09-01 16:43:24

在阅读Java中的并发性时,我有以下疑问:

  1. Java 是否提供较低级别的构造,然后进行同步以进行同步?

  2. 在什么情况下,我们将使用信号量而不是同步(在Java中提供监视行为)


答案 1

“已同步”仅允许一个执行线程同时访问资源。信号量允许最多 n 个(您可以选择 n 个)执行线程同时访问资源。


答案 2
  1. 还有关键字,根据 http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html 变量访问比通过同步代码访问这些变量更有效volatilevolatile

  2. java.util.concurrent.Semaphore用于限制可以访问资源的线程数。也就是说,虽然只允许一个线程获取锁定并执行同步块/方法,但Semaphore允许最多n个线程去并阻止其他线程。synchronized


推荐