day20Java-Thread-概述

博客
Java-(高级)

文章目录

        • Thread概述

Thread概述

java.lang.Thread
多线程引入
day20Java-Thread-概述_第1张图片
进程和线程概述:

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

2:什么是进程?
	通过任务管理器就看到了进程的存在。
	而通过观察,发现只有运行的程序才会出现进程。
	进程:就是正在运行的程序。
	进程是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。
	
3:多进程有什么意义呢?
	单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。
	举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。
	也就是说现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。
	并且呢,可以提高CPU的使用率。
	
	问题:
		一边玩游戏,一边听音乐是同时进行的吗?
		不是。因为单CPU在某一个时间点上只能做一件事情。
		而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换让我们觉得是同时进行的。
		
4:什么是线程呢?
	在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。
	线程:是程序的执行单元,执行路径。是程序使用CPU的最基本单位。
	单线程:如果程序只有一条执行路径。
	多线程:如果程序有多条执行路径。
	
5:多线程有什么意义呢?
	多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率。
	程序的执行其实都是在抢CPU的资源,CPU的执行权。
	多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权。
	我们是不敢保证哪一个线程能够在哪个时刻抢到,所以线程的执行有随机性。

进程和线程概述总结:
	 	进程:
	 		正在运行的程序,是系统进行资源分配和调用的独立单位。
	 		每一个进程都有它自己的内存空间和系统资源。
	 	线程:
	 		是进程中的单个顺序控制流,是一条执行路径
	 		一个进程如果只有一条执行路径,则称为单线程程序。
	 		一个进程如果有多条执行路径,则称为多线程程序。
举例:
 	  	扫雷程序,迅雷下载

注意两个词汇的区别:并行和并发。
 		前者是逻辑上同时发生,指在某一个时间内同时运行多个程序。
 		后者是物理上同时发生,指在某一个时间点同时运行多个程序。

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

线程调度
假如我们的计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到 CPU时间片,也就是使用权,才可以执行指令。那么Java是如何对线程进行调用的呢?

线程有两种调度模型:

分时调度模型     所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间片。
抢占式调度模型   优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的 CPU 时间片相对多一些。 

Java使用的是抢占式调度模型。

你可能感兴趣的:(JavaSE)