faiss数据库怎么读(数据库false什么意思)

faiss数据库怎么读(数据库false什么意思)AQS 全称 AbstractQueu 抽象队列同步器 java concurrent 包里很多类中定义了 Sync 内部类继承自 AQS 比如 ReentrantLoc CountDownLat Semaphore CyclicBarrie 内部使用了 ReentrantLoc 等 下面我们来通过 ReentrantLoc 源码解读 AQS 1 定义两种资源共享方式

大家好,我是讯享网,很高兴认识大家。



AQS全称 AbstractQueuedSynchronizer 抽象队列同步器,java concurrent包里很多类中定义了Sync内部类继承自AQS,比如 ReentrantLock,CountDownLatch,Semaphore,CyclicBarrier(内部使用了ReentrantLock)等,下面我们来通过ReentrantLock源码解读AQS

1.定义两种资源共享方式:Exclusive(独占,只有一个线程能执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如Semaphore/CountDownLatch)
2.定义了一个volatile int state,0代表空闲状态,1代表占用状态
3.定义了一个Node节点

4.定义了4个方法必须子类实现否则抛出异常

  • tryAcquire(int):独占方式。尝试获取资源,成功则返回true,失败则返回false。
  • tryRelease(int):独占方式。尝试释放资源,成功则返回true,失败则返回false。
  • tryAcquireShared(int):共享方式。尝试获取资源。负数表示失败;0表示成功,但没有剩余可用资源;正数表示成功,且有剩余资源。
  • tryReleaseShared(int):共享方式。尝试释放资源,如果释放后允许唤醒后续等待结点返回true,否则返回false。

javaAIS解析开源库_结点
讯享网

1.LOCK
进入lock()方法(AQS非公平锁的实现类中)
ReentrantLock.java

javaAIS解析开源库_结点_02

这里重要的有三个方法:

  • tryAcquire(arg):尝试获取锁
  • addWaiter(Node.EXCLUSIVE):添加到同步队列
  • acquireQueued(addWaiter(Node.EXCLUSIVE), arg)):队列里自旋等待获取等

javaAIS解析开源库_结点_03

刚开始pred=null走enq(node);方法

javaAIS解析开源库_javaAIS解析开源库_04

javaAIS解析开源库_java_05

node为B节点,故p为head,因此进入tryAcquire(arg),再次抢占由于A线程一直占用所以还是false,因此进入
if (shouldParkAfterFailedAcquire(p, node) &&
parkAndCheckInterrupt())
interrupted = true;分支

  • shouldParkAfterFailedAcquire(p, node)
  • parkAndCheckInterrupt()

进入shouldParkAfterFailedAcquire(p, node) 方法

初始进入pred.waitStatus=0;进入 compareAndSetWaitStatus(pred, ws, Node.SIGNAL);
设置状态为Node.SIGNAL(-1)
第二次循环return true,进入parkAndCheckInterrupt()方法

B线程被阻塞挂起,使线程进入waiting状态,等待被unpark

javaAIS解析开源库_结点_06

进入unlock()方法

进入tryRelease(arg)方法

javaAIS解析开源库_公平锁_07

javaAIS解析开源库_公平锁_08

javaAIS解析开源库_javaAIS解析开源库_09

javaAIS解析开源库_javaAIS解析开源库_10

javaAIS解析开源库_java_11

  • tryAcquire(arg)
  • addWaiter(Node.EXCLUSIVE)
  • acquireQueued(addWaiter(Node.EXCLUSIVE), arg)
  • shouldParkAfterFailedAcquire(p, node)
  • parkAndCheckInterrupt()

release中

  • unparkSuccessor(Node node)

javaAIS解析开源库_javaAIS解析开源库_12

小讯
上一篇 2025-05-01 23:30
下一篇 2025-04-28 17:55

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/185826.html