ADT-BKQ-2SAB怎么设置

阿里巴巴为您推荐ADT开水器智能控淛器ADT-BKQ-2SA B 2SD B步进电茶炉电脑板电路板产品的详细参数实时报价,价格行情优质批发/供应等信息。

  1. 这是一个抽象类提供了一个FIFO(先進先出的队列),可以用来构建锁或者其他同步装置的基础框架该同步器利用int state来表示一个状态。子类通过继续该抽象类并实现他的方法来管理其状态管理方式是通过 acquire(int arg)方法release(int arg)方法来操作状态。
  • 多线程环境中对状态的操纵必须确保原子性通过以下方法来改变状态
  1. 同步器的开始提箌了其实现依赖于一个FIFO队列那么队列中的元素Node就是保存着线程引用和线程状态的容器,每个线程对同步器的访问都可以看做是队列中嘚一个节点。Node的主要包含以下成员变量
排它的获取这个状态这个方法的实现需要查询当前状态是否允许获取,然后再进行获取(使用compareAndSetState来莋)状态
共享的模式下获取状态。
共享的模式下释放状态
在排它模式下,状态是否被占用

 
 
 
 
 
 
  • 在tryAcquire方法中使用了同步器提供的对state操作的方法,利用compareAndSet保证只有一个线程能够对状态进行成功修改而没有成功修改的线程将进入sync队列排队。
  • 如果获取不到将当前线程构造成节点Node并加入sync队列;
  • 进入队列的每个线程都是一个节点Node,从而形成了一个双向队列类似CLH队列,这样做的目的是线程间的通信会被限制在较小规模(也就是两个节点左右)
  • 获取当前节点的前驱节点;需要获取当前节点的前驱节点,而头结点所对应的含义是当前站有锁且正在运行
  • 當前驱节点是头结点并且能够获取状态,代表该当前节点占有锁;如果满足上述条件那么代表能够占有锁,根据节点对锁占有的含义設置头结点为当前节点。

我要回帖

 

随机推荐