JavaSE之多线程(一)

学无止境,脚踏实地,一步一个脚印,走过的路最后都成为生命的波澜壮阔。

  之前很长一段时间不知道该如何记录自己的学习过程,导致学习的进度一直拖,就在前几天,我决定以写博客的形式,这大概是“没有办法的办法”了吧!我姑且先这样写着,以后的事儿以后再说吧!

为什么我总是要记录自己学习的过程呢?答案是:缓解焦虑的情绪。如今真的是学习变成了一件特普遍特没有门槛的事儿,就好像一个男孩追一个女孩,轻易地就到手了,就不会珍惜,反而不容易得到的,才是会珍惜的。说这么多,可能是因为这是我的第一篇博客吧,好下面开始言归正传。

  一、何为多线程?

  要想了解多线程,先得了解线程,而要了解线程,就必须了解进程,因为线程是依赖于进程存在的。

  关于进程的几点理解:

  1.定义进程就是正在运行的程序,进程是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。

  2.多进程存在的意义:单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。也就是说现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。并且呢,可以提高CPU的使用率。那么上面的例子,一边玩游戏一边听音乐,这两个进程是同时进行的吗?答案当然是:NO啊,因为单CPU在某一个时间点上只能做一件事情。  而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换让我们觉得是同时进行的。

  关于线程的几点理解:

  在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。

  1.定义:线程是程序的执行单元,执行路径。是程序使用CPU的最基本单位。

      单线程:如果程序只有一条执行路径。
      多线程:如果程序有多条执行路径。

  2.多线程存在的意义:

      多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率。程序的执行其实都是在抢CPU的资源,CPU的执行权。多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权。线程的执行存在随机性,不可能人为的控制谁先获得CPU的控制权。

  二、并行与并发的区别?(了解即可)

  前者是逻辑上同时发生,指在某一个时间内同时运行多个程序。

    后者是物理上同时发生,指在某一个时间点同时运行多个程序。

  三、Java程序的运行原理

  由java命令启动JVM,JVM启动就相当于启动了一个进程。接着有该进程创建了一个主线程去调用main方法。

  

  那么Jvm虚拟机的启动是单线程的还是多线程的?
  多线程的。
  原因是垃圾回收线程也要先启动,否则很容易会出现内存溢出。
  现在的垃圾回收线程加上前面的主线程,最低启动了两个线程,所以,Jvm的启动其实是多线程的。

猜你喜欢

转载自www.cnblogs.com/wholovewangjie/p/9067575.html