V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0576coder
V2EX  ›  Java

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

  •  
  •   0576coder · 2021-07-01 01:43:44 +08:00 · 1165 次点击
    这是一个创建于 1243 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    对于共享式还是没理解

    我感觉锁都是独占式的

    2 条回复    2021-07-01 08:00:30 +08:00
    0576coder
        1
    0576coder  
    OP
       2021-07-01 01:50:16 +08:00
    我好像明白了一点 比如共享式 我能控制同一时刻最多 10 个线程读我的文件 对于这 10 个线程来说是共享的。
    但是线程 11 想再读 会被阻塞 我好像明白了点
    wsxyeah
        2
    wsxyeah  
       2021-07-01 08:00:30 +08:00 via iPhone
    1. 读写文件这个可以用读写锁 ReadWriteLock,写是需要独占的,读可以共享。
    2. 控制最高并发数可以用信号量 Semaphore,n 个共享。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1017 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 23:04 · PVG 07:04 · LAX 15:04 · JFK 18:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.