0576coder
V2EX  ›  Java

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

  •  
  •   0576coder · Jul 1, 2021 · 1705 views
  •   You need to sign in to view this topic
    This topic created in 1855 days ago, the information mentioned may be changed or developed.

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

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

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

    对于共享式还是没理解

    我感觉锁都是独占式的

    2 replies    2021-07-01 08:00:30 +08:00
    0576coder
        1
    0576coder  
    OP
       Jul 1, 2021
    我好像明白了一点 比如共享式 我能控制同一时刻最多 10 个线程读我的文件 对于这 10 个线程来说是共享的。
    但是线程 11 想再读 会被阻塞 我好像明白了点
    wsxyeah
        2
    wsxyeah  
       Jul 1, 2021 via iPhone
    1. 读写文件这个可以用读写锁 ReadWriteLock,写是需要独占的,读可以共享。
    2. 控制最高并发数可以用信号量 Semaphore,n 个共享。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3479 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:53 · PVG 12:53 · LAX 21:53 · JFK 00:53
    ♥ Do have faith in what you're doing.