JUC并发编程学习笔记(一)认知进程和线程
1.JUC并发编程学习笔记(二)Lock锁(重点)
2.JUC并发编程学习笔记(一)认知进程和线程
3.JUC并发编程学习笔记(三)生产者和消费者问题4.JUC并发编程学习笔记(四)8锁现象5.JUC并发编程学习(五)集合类不安全6.JUC并发编程学习笔记(六)Callable(简单)7.JUC并发编程学习笔记(七)常用的辅助类8.JUC并发编程学习笔记(八)读写锁9.JUC并发编程学习笔记(九)阻塞队列10.JUC并发编程学习笔记(十)线程池(重点)11.JUC并发编程学习(十一)四大函数式接口(必备)12.JUC并发编程学习笔记(十二)Stream流式计算13.JUC并发编程学习(十三)ForkJoin14.JUC并发编程学习笔记(十四)异步回调15.JUC并发编程学习笔记(十五)JMM16.JUC并发编程学习笔记(十七)彻底玩转单例模式17.JUC并发编程学习笔记(十九)原子引用18.JUC并发编程(终章)各种锁的理解19.JUC并发编程学习笔记(十六)Volatile20.JUC并发编程学习笔记(十八)深入理解CAS进程和线程
进程
一个程序,如QQ.exe,是程序的集合
一个进程往往可以包含多个线程,至少包含一个
java默认有两个线程,GC垃圾回收线程和Main线程
线程:一个进程中的各个功能
java无法真正的开启线程,因为java是运行在虚拟机上的,所以只能通过C++,通过native本地方法调用C++开启线程
private native void start0();
并发、并行
并发:多线程操作同一资源
- cpu单核情况下,通过快速交替模拟多条线程
并行:多个线程一起行走
- 只有在cpu多核情况下才可能产生并行,多个线程同时进行,cpu核数决定最大并行量。线程池
并发编程的本质就是想要充分利用电脑的cpu资源
线程有几个状态
java中的Thread.State重点列举了线程的状态,其中有6中状态
public enum State { //新增 NEW, //运行 RUNNABLE, //阻塞 BLOCKED, //等待,死等 WAITING, //超时等待 TIMED_WAITING, //终止 TERMINATED; }
wait/sleep的区别
-
来自不同的类
wait->Object类
sleep->Thread类
-
关于锁的释放
wait会将锁释放、sleep不会释放锁,抱着锁睡觉 -
使用的范围是不同的
wait必须在同步代码块中使用
sleep可以在任何地方使用 -
是否需要捕获异常
wait不需要捕获异常,由于在同步代码块中,所以不存在超市等待的问题
sleep必须要捕获异常,可能会发生超时等待的问题只要是线程都会有一个异常,那就是中断异常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构