什么是进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
初看百度百科上面这段文字会显得十分抽象,难以理解。但是我们看一下win系统的任务管理器:

可以看到,在操作系统中运行了很多exe程序,这些就是一个个进程?没错!进程是受操作系统管理的基本运行单元。在Linux系统中,我们运行一个软件也是同样的道理。
什么是线程
线程可以理解成在进程中独立运行的子任务。比如QQ软件运行时,有在线视频聊天、传输文件、发送表情等子任务,这些任务可以同时运行。每一项子任务可以理解为一个线程在工作。
使用多个子任务,也就是多线程的优点,就是最大限度的利用CPU的空闲时间来处理其它任务,比如聊天,打印数据,编辑文档等等可以同时进行。而CPU在这些任务之间不停进行切换,由于切换的非常快,使用者的感受就是这些任务就是在同时运行,相信大家使用win系统深有体会。所以使用多线程技术后,可以在同一时间运行更多不同种类的任务。
下面举个例子,任务A运行需要10秒,任务B运行需要1秒,这两个是完全独立互不影响的任务,如果顺序执行,那么总时长就是11秒,也就是同步执行。但是运行中发现任务A有段时间是一直在等待返回数据的,那么我们可以利用这段时间进行CPU切换,去运行任务B,使B不再等待10秒以后再运行,这样两个任务的总时长就取决于最大任务的时长,也即是10秒,系统的运行效率也得到了提升。这就是要使用多线程技术,要学习多线程的原因。这是多线程技术的优点,使用多线程也就是在使用异步。
注意,因为多线程是异步的,所以写在类里的代码顺序不一定就是执行顺序,线程被调用的时机是随机的。
我们的交流基地,“JAVA互联网技术交流:789650498”欢迎小伙伴们一起来交流:
