学无止境,脚踏实地,一步一个脚印,走过的路最后都成为生命的波澜壮阔。
之前很长一段时间不知道该如何记录自己的学习过程,导致学习的进度一直拖,就在前几天,我决定以写博客的形式,这大概是“没有办法的办法”了吧!我姑且先这样写着,以后的事儿以后再说吧!
为什么我总是要记录自己学习的过程呢?答案是:缓解焦虑的情绪。如今真的是学习变成了一件特普遍特没有门槛的事儿,就好像一个男孩追一个女孩,轻易地就到手了,就不会珍惜,反而不容易得到的,才是会珍惜的。说这么多,可能是因为这是我的第一篇博客吧,好下面开始言归正传。
一、何为多线程?
要想了解多线程,先得了解线程,而要了解线程,就必须了解进程,因为线程是依赖于进程存在的。
关于进程的几点理解:
1.定义:进程就是正在运行的程序,进程是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。
2.多进程存在的意义:单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。也就是说现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。并且呢,可以提高CPU的使用率。那么上面的例子,一边玩游戏一边听音乐,这两个进程是同时进行的吗?答案当然是:NO啊,因为单CPU在某一个时间点上只能做一件事情。 而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换让我们觉得是同时进行的。
关于线程的几点理解:
在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。
1.定义:线程是程序的执行单元,执行路径。是程序使用CPU的最基本单位。
单线程:如果程序只有一条执行路径。
多线程:如果程序有多条执行路径。
2.多线程存在的意义:
多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率。程序的执行其实都是在抢CPU的资源,CPU的执行权。多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权。线程的执行存在随机性,不可能人为的控制谁先获得CPU的控制权。
二、并行与并发的区别?(了解即可)
前者是逻辑上同时发生,指在某一个时间内同时运行多个程序。
后者是物理上同时发生,指在某一个时间点同时运行多个程序。
三、Java程序的运行原理
由java命令启动JVM,JVM启动就相当于启动了一个进程。接着有该进程创建了一个主线程去调用main方法。
那么Jvm虚拟机的启动是单线程的还是多线程的?
多线程的。
原因是垃圾回收线程也要先启动,否则很容易会出现内存溢出。
现在的垃圾回收线程加上前面的主线程,最低启动了两个线程,所以,Jvm的启动其实是多线程的。