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 第六组 刘明延 学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程