微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java中各种线程同步选项有什么区别?

有人可以解释Java中各种同步方法间的各种差异吗?

> Syncornized块(如显示器?)
>锁 – Java并发lock.lock()/ lock.unlock()
>信号量..?
> Object.wait()& Object.notify()(就像Mutex?)
>其他课程

所以我真的想知道常用的不同Java同步选项是什么,以及它们如何映射到“传统”/理论互斥锁,信号量,锁和监视器.

干杯!

最佳答案
我将简要说明每一个

> synchronized块是您的平均临界区.没有给予太多控制.只有一个线程可以一次获取锁,并且当同步范围结束时它将自动释放它.
>锁是同步块的更灵活的版本.根据实现,它们可能是可重入的,或者可能支持tryLock等操作,如果它是空闲的,它只会尝试获取锁定,否则立即返回.锁需要明确解锁.
>信号量基本上是一个锁,但具有一个附加功能,即多个线程可以一次进入临界区.它遵循更为笼统的“许可”概念,其中信号量可能具有线程想要获得的若干许可.线程可以获得一个或多个许可,并可以恢复一个或多个许可.它允许在“可用资源”方面考虑更多的同步,而不是在“需要保护的代码”方面.
> wait / notify大致相当于条件变量的概念.同样,它们必须受同步块保护,并且只有在用作监视器的对象上保持锁定时才会调用它们.

原文地址:https://www.jb51.cc/java/438068.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐