有人可以解释 Java 中各种同步方法之间的各种差异吗?
- 同步块(如监视器?)
- 锁 - Java 并发 lock.lock()/lock.unlock()
- 信号量..?
- Object.wait() & Object.notify() (比如 Mutex?)
- 其他类
所以我真的很想知道常用的不同 Java 同步选项是什么,以及它们如何映射到“传统”/理论互斥体、信号量、锁和监视器。
干杯!
有人可以解释 Java 中各种同步方法之间的各种差异吗?
所以我真的很想知道常用的不同 Java 同步选项是什么,以及它们如何映射到“传统”/理论互斥体、信号量、锁和监视器。
干杯!
我将对每个进行简要说明:
tryLock
仅在空闲时尝试获取锁的操作,否则立即返回。锁需要显式解锁。wait / notify
大致相当于条件变量的概念。同样,它们必须受到同步块的保护,并且只有在被用作监视器的对象上持有锁时才调用它们才能正常工作。Java 原生支持线程和同步。同步线程的本机(或低级)方法是使用同步块和方法(== 临界区),wait()
并且notify()
.
这种技术允许你做任何你想做的事情,但不幸的是,这种方式有时非常冗长。Doug Lea 最初在 Apache 项目下开发了并发包。然后这个软件包被 Sun Microsystems 采用。这个包提供了更方便的 API。
查看这篇文章了解更多详情:http ://docs.oracle.com/javase/tutorial/essential/concurrency/