1 线程和进程
1.1 个人理解的线程和进程的定义
进程: 一个被加载到内存中的一个应用程序。
线程: 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。
我们看一下运行时的数据区就可以看出来进程和线程之间的关系了(图片来自于水印)。
线程和进程的联系与区别:
(1)进程相对其内部的线程来说是一个更大的应用程序,是一种包含于被包含的关系。
(2)一个应用程序至少包含一个进程,一个进程中至少一条线程;
(3) 当线程由CPU执行时,系统不会为被执行的线程开辟内存空间,被执行的线程的内存空间为系统分配给其所属进程的一部分内存空间。
(4)线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定。
2 并发和并行的理解
并发: 两个或者多个事件在同一个时间段内发生。结合下图(来自黑马程序员JAVASE教程)。这就意味着在某一时刻由的任务在被执行,有的任务没有在被执行,不过CPU在进行任务切换时间单位为1/n 毫秒 ,因此用户却无法察觉到这一情况,实现了单核单线程的CPU也能够同时执行多个任务。
并行: 两个或者多个事件在同一个时刻发生(同时发生)。
但是并不意味多核心多线程的CPU的某一线程会专门来执行某一个线程任务,CPU仍然是在多个线程之间进行切换的,但是多核心多线程的CPU的可以使得多个线程任务同一时刻执行,但并发在一个时间片内只能执行一个线程任务。
并发与并行的区别与联系
· 并发和并行的思想都是为了一台计算机可以执行多个任务而发明的思想。并行的思想是以并发为基础的,可以认为计算在计算机在并行处理的时候,实际上是多个并发的组合。