关于 AQS 里的共享式地获取同步状态 acquireShared 方法,多个线程都可以共享式的获取了,直接不用锁不就好了吗

2021-07-01 01:43:44 +08:00
 0576coder

看到梳理关于 AbstractQueuedSynchronize 里的介绍,看懂了大概一半不到把 似懂非懂

我想不通什么场景下需要共享式,还有比如我有 100 个线程,这种共享式的话 是不是我 100 个线程都能获取到,那不就意义不大了吗

比如我读文件 我就不加锁好了,我只有在写文件的时候再加锁= =

对于共享式还是没理解

我感觉锁都是独占式的

1176 次点击
所在节点    Java
2 条回复
0576coder
2021-07-01 01:50:16 +08:00
我好像明白了一点 比如共享式 我能控制同一时刻最多 10 个线程读我的文件 对于这 10 个线程来说是共享的。
但是线程 11 想再读 会被阻塞 我好像明白了点
wsxyeah
2021-07-01 08:00:30 +08:00
1. 读写文件这个可以用读写锁 ReadWriteLock,写是需要独占的,读可以共享。
2. 控制最高并发数可以用信号量 Semaphore,n 个共享。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/786804

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX