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

前端之家收集整理的这篇文章主要介绍了Java中各种线程同步选项有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

干杯!

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

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

猜你在找的Java相关文章