一,什么是进程?
进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
我们打开任务管理器:
此时我们完全可以将运行在内存内存中的exe文件理解成进程(进程是受操作系统管理的基本运行单元)。程序其实就是指令序列,这些指令可以让cpu完成指定的任务。在Java中,.java文件经过编译之后形成.class文件,而在windows中启动一个jvm虚拟机就相当于创建了一个进程,在虚拟机中加载class文件并运行。
二,什么是线程?
线程其实是进程中独立运行的子任务,例如:wechat.exe运行时,很多的子任务也在同时运行,加好友线程,下载文件线程,传输数据线程,发送表情线程等等。微信中的每一个功能都有对应的线程在后台默默地运行。
三,什么是多线程?
一个进程中至少有一个线程存在,即是主线程。多个线程之间可以共享进程中相同的内存或文件资源。在使用windows系统是,我们可以利用cpu的空闲时间来处理其他任务,比如我们可以一边浏览贴吧一边听歌。cpu在这些任务中不停的进行切换,由于切换的速度非常快,给我们的感受就是这些任务在同时执行(时间片轮转调度算法),所以使用多线程技术可以在同一时间内执行更多的不同任务。
在不使用多线程的情况下,我们可以将cpu处理每个线程的情况看作是一个队列,必须等到先入队的线程被执行完毕之后才能运行下一个线程,在同一时间只能执行一个任务,cpu利用率大幅降低而在使用了多线程之后,cpu在这些线程中来回切换,在同一时间可以执行多个任务,这也是多线程技术的优点。
四,进程和线程的区别:
1.相对而言进程是一个比较大的概念,一个进程至少包含一个线程,但是进程中线程的数目太多了,线程之间就会更频繁地进行调度,此时调度的开销就无法忽略;
2.进程和进程之间不共享内存空间,但一个进程的线程之间共享一个内存空间,也就是说,进程负责向操作系统申请资源,在一个进程中,多个线程可以共享进程中相同的内存或文件资源。
3.进程是系统分配资源的最小单位而线程是系统调度的最小单位。