前言:笔记整理参考尚硅谷周阳老师在B站上的JUC教程,万分感谢周阳老师。有兴趣的朋友可以在B站搜索周阳老师的视频教程,绝对让你受益匪浅,期望未来也能成为像周阳老师那样的人O(∩_∩)O哈哈~。
JUC B站视频地址
https://www.bilibili.com/video/BV1jy4y1k7AP?from=search&seid=7364891347085955403&spm_id_from=333.337.0.0
一、JUC
1.1、什么是JUC
java.util.concurrent在并发编程中使用的工具类
1.2、进程和线程
1.2.1、什么是进程?什么是线程
进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
线程:通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度。
1.2.2、进程、线程案例
(1)使用QQ,查看进程一定有一个QQ.exe的进程,我可以用qq和A文字聊天,和B视频聊天,给C传文件,给D发一段语言,QQ支持录入信息的搜索。
(2)大四的时候写论文,用word写论文,同时用QQ音乐放音乐,同时用QQ聊天,多个进程。
(3)word如没有保存,停电关机,再通电后打开word可以恢复之前未保存的文档,word也会检查你的拼写,两个线程:容灾备份,语法检查
1.2.3、线程有哪些状态
Thread.State
public enum State {NEW,//新建RUNNABLE,//准备就绪BLOCKED,//阻塞WAITING,//不见不散TIMED_WAITING,//过时不候TERMINATED;//终结}
1.2.4、wait和sleep的区别
功能都是当前线程暂停,有什么区别?
wait放开手去睡,放开手里的锁
sleep握紧手去睡,醒了手里还有锁
1.2.5、什么是并发?什么是并行
并发:同一时刻多个线程在访问同一个资源,多个线程对一个点。
例子:
小米9今天上午10点,限量抢购;
春运抢票;
电商秒杀…
并行:多项工作一起执行,之后再汇总
例子:泡方便面,电水壶烧水,一边撕调料倒入桶中