2022-08-03 第六组 刘明延 学习笔记
2022/8/3 6:52:48
本文主要是介绍2022-08-03 第六组 刘明延 学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
/** 进程:运行中的程序 * 启动一个进程,操作系统就会为该进程分配内存空间 * 关掉进程,就释放内存 * * 线程:进程的一个实体,由进程创建,也可以创建线程 * 一个进程可以有多个线程 * * 并发:同一时刻,多个任务交替执行,"貌似同时",单核cpu实现的就是并发 * 并行:同一时刻,多个任务同时执行,多核cpu可以实现并行 * * 创建线程的两个方法: * 1.继承Thread,重写run方法 * 2.实现Runnable接口, * 3.实现Callable接口 * * 线程名=Thread.currentThread().getName() * * !!!真正实现多线程效果的,是start0(),底层是c/c++实现,只有JVM才能调用,start0()在start()方法中 * * 只有native能控制cpu * 调用start0方法后,该线程并不一定立即执行,只是将线程变成了可运行状态,具体什么时候运行,取决于cpu,由cpu统一调度 * * 守护线程: * Java中提供两种类型1的线程, * 1.用户线程 * 2.守护程序线程 * * 守护线程是为用户线程提供服务的,仅在用户线程运行时才需要 * * 主方法可以理解为用户线程 * 守护线程对于后台支持任务非常有用 * 如:垃圾回收,大多数JVM线程都是守护线程 * * 主程序就是用户线程,聊天窗口就是守护线程 * 创建守护线程 * * 在主方法内启动的任何线程默认都是守护线程 * * 线程的生命周期 * 从摇篮到坟墓 * NEW:这个状态主要是线程未被start()调用执行 * RUNNABLE:线程正在JVM中被执行,等待来自操作系统的调度 * BLOCKED:阻塞,因为某些原因,不能立即执行,需要挂起等待 * WAITING:无限期等待。Object类。如果没有被唤醒,则一直等待 * TIMED_WAITING:有限期等待,线程等待一个指定的时间 * TERMINATED:终止线程的状态,线程已经执行完毕 * * 等待和阻塞有点像,阻塞是因为外部原因,等待一般是主动调用方法,发起主动的等待,等待可以传入参数,确定等待时间 * * 同步代码块 * synchronized(对象){//得到对象的锁,才能操作同步代码 * //需要被同步代码 * } * synchronized还可以放在方法声明中,表示整个方法-为同步方法 * public synchronized void m(String name){ * //需要被同步的代码 * } * * CPU多核缓存结构 * 物理内存:硬盘内存 (固态硬盘, 尽量不要选择混合硬盘) * CPU缓存为了提高程序运行的性能,现在CPU在很多方面对程序进行优化 * CPU处理速度最快,内存次之(不安全),硬盘速度最慢(最安全稳定) * 在CPU处理内存数据时,如果内存运行速度太慢就会拖累CPU * 为了解决这样的问题,CPU设计了多级的缓存策略 * * CPU分为三级缓存,每个CPU都有L1,L2缓存,但是L3缓存时多核公用的 * CPU在查找数据时,CPU->L1->L2->L3->内存->硬盘 * 从CPU到内存,大概要60-80纳秒 * 从CPU到L3,15纳秒 * 从CPU到L2,3纳秒 * 从CPU到L1,1纳秒 * 寄存器,0.3纳秒 * 进一步优化,CPU每次读取一个数据,也读取与它相邻的64个字节的数据 * 【缓存行】 * * 英特尔提出了一个协议 * 1.修改态,此缓存被动过,内容与主内存不同,为此缓存专有 * 2.专有态,此缓存与主内存一致,但是其他CPU中没有 * 3.共享态,此缓存与主内存一致,其他的缓存也有 * 4.无效态,此缓存无效,需要从主缓存中重新读取 * * 【指令重排】 * 四条指令,让四个人在四张纸上写下【恭喜发财】,一人一个字,谁先写完就加载,都加载后再排序 * * Java内存模型-JMM * 尽量做到硬件和操作系统之间打到一致的访问效果 * * interrupt:中断线程,包括休眠 * setPriority:更改线程的优先级 学习心得:今天内容不好理解,多线程是最难学的部分,所以要多花时间了解概念和代码 学习感受:和之前的内容结合起来用有难度,尤其是学的东西越来越多,以前的内容变得更重要,必须用更多时间去复习
这篇关于2022-08-03 第六组 刘明延 学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南