快速帮你掌握进程和线程
进程与线程的概念
在区别两者的前提是要分清楚什么是进程,什么是线程。
- 进程:在前边一篇博客中已经详细解释了什么是进程,请各位小伙伴前去了解一下吧。文章链接: 进程调度的基本过程
- 线程 :一个线程就是一个 “执行流”。每个线程之间都可以按照顺序执行自己的代码。多个线程之间 “同时” 执行多份代码。
现在举一个小栗子来深刻了解一下什么是线程吧!
这里有一个柚子同学,她要吃肯德基,首先她点了三样东西:一个汉堡🍔,一份炸薯条🍟,一杯可乐🥤。现在是张三服务员在为她准备东西。如果只有张三一个服务员就会忙不过来,耗费的时间特别长。为了让食物更快地准备好,张三又找来李四、王五一起来帮助他,三个人分别负责一个事情,分别申请一个号码进行排队,自此就有了三个执行流共同完成任务,但本质上他们都是为了为柚子同学一个人准备肯德基套餐。
此时,我们就把这种情况称为多线程,将一个大任务分解成不同小任务,交给不同执行流就分别排队执行。其中李四、王五都是张三叫来的,所以张三一般被称为主线程(Main Thread)。
为什么要有线程呢?
1.“并发编程”是刚需
单核 CPU 的发展遇到了瓶颈. 要想提高算力,如果CPU再往小的做就会比较困难了,所以就需要多核 CPU.。而并发编程能更充分利用多核 CPU资源。
2.“进程”太重了
其实多进程编程已经能够解决并发编程了,但是进程太重了,而线程比进程更轻量,所以线程应运而生了。线程也叫作“轻量级进程”。说起进程重,主要是重在“资源分配/回收”上。
- 创建线程比创建进程更快.
- 销毁线程比销毁进程更快.
- 调度线程比调度进程更快
进程和线程的区别
1.进程是包含线程的. 每个进程至少有一个线程存在,即主线程。
2.进程和进程之间不共享内存空间. 同一个进程的线程之间共享同一个内存空间。
3.进程是操作系统分配资源的最小单位,线程是操作系统调度执行的最小单位。
Java 的线程和操作系统线程的关系
- 线程是操作系统中的概念. 操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API 供用户使用(例如 Linux 的 pthread 库)。
- Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装。