20201019_陈宇_

日志

学习总结:

并发和并行:

​ 并行:指两个或多个事件在同一时刻发生(同时执行)

​ 并发:指两个或多个事件在同一个时间段内发生(交替执行)

​ 注意:单核处理器的计算机肯定是不能并行的处理多个任务的,只能是多个任务在单个CPU上并 发运行。同理,线程也是一样的,从宏观角度上理解线程是并行运行的,但是从微观角度上分析却 是串行运行的,即一个线程一个线程的去运行,当系统只有一个CPU时,线程会以某种顺序执行 多个线程,我们把这种情况称之为线程调度

进程:

​ 进程( Process )是指正在运行的程序,如 QQ ,是程序一次动态执行过程。它对应了从代码加载、执行 并执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到消亡的过程。操作系统同时管理一 个计算机系统中的多个进程,让计算机系统中的多个进程轮流使用CPU资源,或者共享资源

​ 特点:

​ 进程是系统运行的基本单位

​ 每一个进程都有自己独立的空间、一组系统资源

​ 每一个进程内部数据和状态都是完全独立的

​ 每一个应用程序运行时都会产生一个进程

线程:

​ 线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个 进程内执行

​ 线程是进程内部的一个执行单元,是可以完成一个独立任务的顺序控制流程,一个进程中至少有一个线程

​ 一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序

进程和线程的区别:

​ 进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线 程

​ 线程:堆空间是共享的,栈空间是独立的,线程消耗的资源比进程小的多

多线程程序是扩展了多任务的概念:

​ 一个程序同时执行多个任务,通常,每一个任务称为一个线程 ( Thread ),它是线程控制的简称,可以同时运行一个以上线程的程序称为多线程程序 ( Multithreaded )

​ 1:因为一个进程中的多个线程是并发运行的,那么从微观角度看也是有先后顺序的,哪个线程执 行完全取决于CPU 的调度,程序员是干涉不了的。而这也就造成的多线程的随机性

​ 2:Java 程序的进程里面至少包含两个线程,主进程也就是 main()方法线程,另外一个是垃圾回收机制线程

​ 3:由于创建一个线程的开销比创建一个进程的开销小的多,那么我们在开发多任务运行的时候, 通常考虑创建多线程,而不是创建多进程

线程调度:

​ 1. 分时调度:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间

​ 2.抢占式调度:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性), Java 使用的为抢占式调度

创建线程:

​ 1.使用Thread类

​ 2.实现接口的方式创建

线程状态:

image-20201019232419028

Thread和Runnable区别:

​ 实现 Runnable 接口比继承 Thread 类所具有的优势:

​ 1.适合多个相同的程序代码的线程去共享同一个资源

​ 2.可以避免 java 中的单继承的局限性

​ 3.增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立

​ 4.实现了 Runable 接口的话,很容易的实现资源共享(一个实例多个线程运行)

​ 5.线程池只能放入实现 Runnable 或 Callable 类线程,不能直接放入继承 Thread 的类

学习心得:

​ 今天基本上把试卷上的东西弄懂了,最后那道编程题得到浩哥的指点,也写出来了,但是时间花得比较多,感觉比较器那一块还没吃透,最开始很多地方自己感觉是没得问题的,但是代码就是要报错,英语不好连错误都不晓得是什么,真是难顶,看来还是必须多练练才能熟悉那些最基础的东西,多看些错误才能明白自己错在哪儿了。

标签

评论

this is is footer