ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 同步状态State 在了解数据结构后,接下来了解一下AQS的同步状态——State。AQS中维护了一个名为state的字段,意为同步状态,是由Volatile修饰的,用于展示当前临界资源的获锁情况。 ~~~ // java.util.concurrent.locks.AbstractQueuedSynchronizer private volatile int state; ~~~ 下面提供了几个访问这个字段的方法: | 方法名 | 描述 | | --- | --- | | protected final int getState() | 获取State的值 | | protected final void setState(int newState) | 设置State的值 | | protected final boolean compareAndSetState(int expect, int update) | 使用CAS方式更新State | 这几个方法都是Final修饰的,说明子类中无法重写它们。我们可以通过修改State字段表示的同步状态来实现多线程的独占模式和共享模式(加锁过程) ![](https://img.kancloud.cn/2a/a5/2aa5356937cadc4ced18a48e947b952c_446x472.png) 对于我们自定义的同步工具,需要自定义获取同步状态和释放状态的方式