文
章
目
录
章
目
录
在正式进入Java多线程学习之前,我们需要先了解下什么是线程、什么是进程,以及线程和进程的区别。
进程概念-什么是进程
简单的来说:进程(process)就是被加载到内存中的可执行程序。更准确的来说,进程是有特定功能的程序在一个数据集上一次动态执行的过程。
它是操作系统执行任务的基本单元,也是分配资源和调度的基本单元。
可以把进程简单理解为操作系统中正在运行的一个程序,包括程序计数器、寄存器和程序变量的当前值。
每个进程都有独立的内存空间;比如打开微信,则表示开启了一个微信进程。可通过任务管理器查看当前运行进程。
当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
线程概念-什么是线程
线程(Thread)是进程的一个执行单元,是操作系统能够进行运算调度的最小单位。
进程是线程的容器,一个进程至少有一个线程,一个进程可以同时并发运行多个线程,它被包含在进程之中,是进程中的实际运作单位。
进程与线程的区别
- 本质区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
- 包含关系:进程基本上相互独立的,而线程存在于进程内,是进程的一个子集,一个进程至少有一个线程,线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
- 进程拥有共享的资源,如内存空间等,供其内部的线程共享
- 进程间通信较为复杂,同一台计算机的进程通信称为 IPC(Inter-process communication),不同计算机之间的进程通信,需要通过网络,并遵守共同的协议,例如 HTTP。线程通信相对简单,因为它们共享进程内的内存,比如多个线程可以访问同一个共享变量
- 线程更轻量,线程上下文切换成本一般上要比进程上下文切换低
主线程和子线程关系
JVM启动时会创建一个主线程,该主线程负责执行main方法。主线程就是执行main方法的线程。
JAVA中的线程不是孤立的,线程之间也会存在一些联系。如果A线程创建了B线程,那么A线程就是B线程的父线程,B线程就是A线程的子线程。
什么是并行
两个或两个以上的系统作业在同一时间段内执行。
什么是并发
两个或两个以上的系统作业在同一时刻执行。
什么是同步
一个调用发起之后,会等待结果返回,结果不返回,自己不结束。
什么是异步
一个调用发起之后,不等待结果返回,自己直接结束。
上面就是一点小概念,帮大家整理一下,省得概念混淆。
总结
以上就是线程和进程的概念及区别,我们还介绍了主线程与子线程之间的关系。