|
有人可以解释Java中各种同步方法之间的各种差异吗?
> Syncornized块(如显示器?) >锁 – Java并发lock.lock()/ lock.unlock() >信号量..? > Object.wait()& Object.notify()(就像Mutex?) >其他课程
所以我真的想知道常用的不同Java同步选项是什么,以及它们如何映射到“传统”/理论互斥锁,信号量,锁和监视器.
干杯!
最佳答案
我将简要说明每一个:
> synchronized块是您的平均临界区.没有给予太多控制.只有一个线程可以一次获取锁,并且当同步范围结束时它将自动释放它. >锁是同步块的更灵活的版本.根据实现,它们可能是可重入的,或者可能支持tryLock等操作,如果它是空闲的,它只会尝试获取锁定,否则立即返回.锁需要明确解锁. >信号量基本上是一个锁,但具有一个附加功能,即多个线程可以一次进入临界区.它遵循更为笼统的“许可”概念,其中信号量可能具有线程想要获得的若干许可.线程可以获得一个或多个许可,并可以恢复一个或多个许可.它允许在“可用资源”方面考虑更多的同步,而不是在“需要保护的代码”方面. > wait / notify大致相当于条件变量的概念.同样,它们必须受同步块保护,并且只有在用作监视器的对象上保持锁定时才会调用它们. (编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|