为什么闭锁不能复用,栅栏可以?

从两者的设计初衷来看,闭锁是一组线程等待另外一组线程,栅栏是一组线程自等待。这样看的话,等另外一组线程对于复用来说用途没那么大。

从实现角度来讲,闭锁直接使用AQS实现,它没有考虑复用问题,一旦资源数为0,就唤醒等待的线程就结束了。而栅栏基于Reentrantlock,它的实现中的generation分代属性,栅栏可打破等配合很优雅的实现了复用。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容