JUC学习笔记
1.获取CPU核数
2.并发编程的本质:充分利用CPU 资源,线程6种状态 --1.新生 2. 运行 3.阻塞 4.等待 ,死死的等待 5 .超时等待 6.终止
3. wait / sleep 区别
wait 会释放锁,
sleep 睡觉了,抱着锁睡觉,不会释放 !
<1>、使用的范围是不同的
wait --》wait必须在同步代码块中
sleep--》 可以再任何地方睡
<2>、是否需要捕获异常
wait 不需要捕获异常
sleep必须要捕获异常
4. lambda表达式 (参数)-> {代码} || ()->{}
// Lock三部曲
// 1、new ReentrantLock();
// 2、Lock.Lock();// 加锁
// 3、finally=>Lock.unlock(); // 解锁
Synchronized 和 Lock 区别
1、Synchronized 内置的lava关键字,Lock 是一个ava类
2、Synchronized 无法判断获取锁的状态,Lock 可以判断是否获取到了锁
3、Synchronized 会自动释放锁,lock 必须要手动释放锁 !如果不释放锁,死锁
4、Synchronized 线程 1(获得锁,阻塞 )、线程2(等待,傻傻的等 ) ; Lock锁就不一定会等待下去;
5、Synchronized 可重入锁,不可以中断的,非公平;Lock ,可重入锁,可以判断锁,非公平(可以自己设置)
6、Synchronized 适合锁少量的代码同步问题,Lock 适合锁大量的同步代码!
Condition 精准的通知和唤醒线程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY