JavaEE 初阶(3)—— 多线程1之理解线程

   之前提到过,通过写特殊的代码,把多个CPU核心都能利用起来,这样的代码就叫“并发编程”。多进程编程,就是一种典型的并发编程。虽然多进程能够解决问题,但是随着对于效率要求越来越高,就希望有更好的并发编程。

  多进程编程,最大的问题 是 进程太“重”,创建进程/销毁进程 的开销比较大(时间、空间) 一旦需求场景 需要频繁的创建销毁进程,开销就非常明显了。最典型的-->服务器开发,针对每个发送请求的客户端,都创建一个单独的进程,由这个进程负责给客户端提供服务。

   为了解决 进程开销比较大 的问题,发明了“线程”。

  线程Thread:可以理解为 更轻量的进程,也能解决 并发编程  问题,但是创建/销毁的开销比较小。同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。

  多线程的编程,成为当下主流的并发编程方式。多线程 基本是未来工作中天天都会用到的东西。

  所谓进程,在系统中 是通过 PCB 这样的结构体来描述(Linux),通过链表的形式组织起来......对于系统中,线程 同样也是通过 PCB 来描述的(Linux) 一个进程,其实是一组PCB;一个线程,是一个PCB  --> 存在了一个“包含关系” :一个进程可以包含 一个或多个 线程,此时每个线程 都可以独立到 CPU 上调度执行。

进程 是 系统“资源分配” 的 基本单位。
线程 是 系统“调度执行” 的 基本单位。

  一个可执行的程序,运行的时候(双击),操作系统就会创建进程,并给这个程序分配各种系统资源(CPU,内存,硬盘,网络宽带...)  同时也会在这个进程中创建出 一个或者多个 线程,这些线程再去CPU上“调度执行”。如果有多个线程在一个进程中,每个线程 都会有自己的 状态 优先级 上下文 记账信息,每个都会各自独立的在CPU上调度执行

   进程 包含 一个或多个 线程,不可以没有线程!!同一个进程中的这些线程,共用同一份系统资源的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值