每天学习多一点。烦恼少一点。
文章目录
前言
本篇内容我们认识一下java中一个重要的知识点:多线程
本次目标:
- 认识多线程
- 掌握多线程的程序编写
- 重点掌握1.3 进程和线程的区别
一、多线程是什么?
认识线程(Thread)
1.1 线程的概念
- 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
- 每个线程都是一个“执行流”,可以单独的在cpu上进行调度
- 同一个进程中的这些线程,共用一份系统资源(内存+文件)
我们通过举一个现实中的例子来更清楚的理解一下!!!
我们设想如下场景:小明开了一家公司,然后到了年底来到银行进行财务转账,福利发放,给员工缴纳社保。
但是呢,一个人做这些事情又麻烦而且还耗时长。所以他叫来了自己公司的两个员工A,B。
这三个人分别负责解决一件事情,就有了三个执行流共同完成任务。但本质上他们三个都是在办理一家公司所需要的业务。
而这三个员工就称为线程,小明也一般被称为主线程。
1.2 为什么要有线程
1.“并发编程”称为“刚需”
- 单核 CPU 的发展遇到了瓶颈. 要想提高算力, 就需要多核 CPU. 而并发编程能更充分利用多核 CPU资源.
- 有些任务场景需要 “等待 IO”, 为了让等待 IO 的时间能够去做一些其他的工作, 也需要用到并发编程
2.多进程虽然也能实现并发编程, 但是线程比进程更轻量
- 创建线程比创建进程更快.
- 销毁线程比销毁进程更快.
- 调度线程比调度进程更快.
3.线程池(在此处就不进行讲解了。关于线程池的内容我们后边再介绍,或者感兴趣的小伙伴可以自行研究一下!!!)
1.3 进程和线程的区别(重点内容)
- 进程是包含线程的. 每个进程至少有一个线程存在,即主线程
- 线程比进程更轻量,创建更快,销毁也更快。进程和进程之间不共享内存空间而同一个进程的线程之间共享同一个内存空间.
- 进程是系统分配资源的最小单位,