JavaEE:进程和线程的区别和联系

目录

一,什么是进程

二,什么是线程

 三,为什么要有线程

四,进程和线程的区别和联系


一,什么是进程

咱可以看看俺写的上一篇:

二,什么是线程

虽然多进程已经实现了并发编程了,但是存在重要的问题:如果频繁的创建/销毁进程,这个操作就比较低效!!所以就有了线程的诞生.

一个线程就是一个 "执行流". 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 "同时" 执行着多份代码.

线程是被包含在进程中的.
一个进程默认会有一个线程.当然也可以有多个线程~每个线程都是一个"执行流”"可以单独的在CPU上进行调度.同一个进程中的这些线程,共用同一份系统资源(内存+文件),因此线程也被称为“轻量级进程”:只有在创建第一个线程的时候,需要申请系统资源,后续的线程与第一个线程共用一份系统资源,因此节省了申请资源的时间消耗;销毁线程的时候,只有在销毁最后一个线程的时候,才会真正释放系统资源,在此之前销毁的线程,都不会真正释放系统资源。
 

就比如说:一家公司要去银行办理业务,既要进行财务转账,又要进行福利发放,还得进行缴社保。如果只有张三一个会计就会忙不过来,耗费的时间特别长。为了让业务更快的办理好,张三又找来两位同事李四、王五一起来帮助他,三个人分别负责一个事情,分别申请一个号码进行排队,自此就有了三个执行流共同完成任务,但本质上他们都是为了办理一家公司的业务。此时,我们就把这种情况称为多线程,将一个大任务分解成不同小任务,交给不同执行流就分别排队执行。其中李四、王五都是张三叫来的,所以张三一般被称为主线程(Main Thread)。

操作系统内核,是通过PCB来描述进程的~~更准确的说法,是一组PCB来描述一个进程.每个PCB对应一个线程.这一组PCB上的内存指针,和文件描述符表,其实是同一份东西,而状态,上下文,优先级,记账信息,则是每个PCB(每个线程)自己有一份~~

进程是资源分配的基本单位,线程是调度执行的基本单位

 三,为什么要有线程

首先,"并发编程”成为“刚需".

单核CPU的发展遇到了瓶颈.要想提高算力,就需要多核CPU.而并发编程能更充分利用多核CPU资源.

有些任务场景需要"等待IO",为了让等待IO的时间能够去做一些其他的工作,也需要用到并发编程.

其次,虽然多进程也能实现并发编程,但是线程比进程更轻量.

创建线程比创建进程更快.

销毁线程比销毁进程更快.

调度线程比调度进程更快.

四,进程和线程的区别和联系

  1. 线程是在进程下运行的;
  2. 进程包含线程,一个进程中至少有一个线程;
  3. 线程比进程更轻量,创建速度更快,销毁速度也更快;
  4. 同一个进程中的多个线程共用一份系统资源;多个进程之间则是各自使用独立的系统资源;
  5. 进程要比线程消耗更多的计算机资源;
  6. 进程之间不会互相影响,但是一个线程如果挂掉了,将导致整个进程都挂掉;
  7. 进程是资源分配的基本单位;线程是系统调度的基本单位.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆腐乾净找方规

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值