1 线程和进程
1.1 个人理解的线程和进程的定义
进程: 一个被加载到内存中的一个应用程序。
线程: 执行进程中的某一个功能时,会生成该功能的执行路径,CPU通过该路径来完成该功能,这个路径就是线程。如一个主线程的执行 流程:一个main方法申请执行,main方法将被加载到栈内存中,JVM会找操作系统开辟一条通往main方法通向CPU的执行路径,CPU就通过这条路径来执行main方法,而这个路径的名称就称作为main(主)线程。简言之,线程只是一条路径来,CPU通过来路径来执行某一条程序。
线程和进程的联系与区别:
(1) 进程是一个应用程序,但线程只是一条路径,JVM通过线程找到指定的程序进行执行;
(2) 一个应用程序至少包含一个进程,一个进程中至少一条线程;
(3) 当线程由CPU执行时,系统不会为被执行的线程开辟内存空间,被执行的线程的内存空间为系统分配给其所属进程的一部分内存空间。
2 并发和并行的理解
并发: 两个或者多个事件在同一个时间段内发生。结合下图(来自黑马程序员JAVASE教程)。这就意味着在某一时刻由的任务在被执行,有的任务没有在被执行,不过CPU在进行任务切换时间单位为1/n 毫秒 ,因此用户却无法察觉到这一情况,实现了单核单线程的CPU也能够同时执行多个任务。
并行: 两个或者多个事件在同一个时刻发生(同时发生)。
但是并不意味多核心多线程的CPU的某一线程会专门来执行某一个线程任务,CPU仍然是在多个线程之间进行切换的,但是多核心多线程的CPU的可以使得多个线程任务同一时刻执行,但并发在一个时间片内只能执行一个线程任务。
并发与并行的区别与联系
· 并发和并行的思想都是为了一台计算机可以执行多个任务而发明的思想。并行的思想是以并发为基础的,可以认为计算在计算机在并行处理的时候,实际上是多个并发的组合。