AQS&管程模型
MESA模型

管程模型

public void method() {
synchronized (this) {
}
}
AQS模型

Reentrantlock示例
简单示例
public class LockDemo {
static Lock lock = new ReentrantLock();
public static void method1() {
lock.lock();
try {
System.out.println("execute method1");
} finally {
lock.unlock();
}
}
}
阻塞队列
public class LockConditionBlockQueue {
private int size;
public LockConditionBlockQueue(int size) {
this.size = size;
}
private Queue<String> queue = new LinkedList<>();
private Lock lock = new ReentrantLock();
private Condition fullCondition = lock.newCondition();
private Condition emptyCondition = lock.newCondition();
private void product() {
lock.lock();
try {
if (queue.size() == size) {
try {
fullCondition.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
String msg = UUID.randomUUID().toString();
queue.offer(msg);
System.out.println("生产消息:" + msg);
emptyCondition.signal();
} finally {
lock.unlock();
}
}
private void consumer() {
lock.lock();
try {
if (queue.size() == 0) {
try {
emptyCondition.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("消费消息:" + queue.poll());
fullCondition.signal();
} finally {
lock.unlock();
}
}
}
- MESA
- Synchronized(monitor)
- Reentrantlock(AQS)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!