AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
#### 8.有哪些常见的AQS锁 AQS分为独占锁和共享锁 **ReentrantLock(独占锁)**:可重入,可中断,可以是公平锁也可以是非公平锁,非公平锁就是会通过两次CAS去抢占锁,公平锁会按队列顺序排队 **Semaphore(信号量)**:设定一个信号量,当调用acquire()时判断是否还有信号,有就获取一个信号量,没有就阻塞等待其他线程释放信号量,当调用release()时释放一个信号量,唤醒阻塞线程。 应用场景:允许多个线程访问某个临界资源时,如上下车,买卖票 **CountDownLatch(倒计数器)**:给计数器设置一个初始值,当调用CountDown()时计数器减一,当调用await() 时判断计数器是否归0,不为0就阻塞,直到计数器为0。 应用场景:启动一个服务时,主线程需要等待多个组件加载完毕,之后再继续执行 **CyclicBarrier(循环栅栏)**:给计数器设置一个目标值,当调用await() 时判断计数器是否达到目标值,未达到就阻塞,直到计数器达到目标值 **应用场景**:多线程计算数据,最后合并计算结果的应用场景