线程之效率,进程和线程的区别和联系

线程  ——Thread。

在java的生态中,并不是很鼓励使用多进程编程,更鼓励使用多线程编程。

引入多进程的初心是实现并发编程,多核CPU的时代。(刚需)

但是多进程编程模型,也有明显的缺点:

进程太重量,效率不高

创建一个进程,消耗时间比较多;

(消耗在申请资源上,进程是资源分配的基本单位)

分配内存操作,就是一个大活。

操作系统内部有一定的数据结构,把空闲的内存分快管理好。

当我们去进行申请内存的时候,系统就会从这样的数据结构中找到一个大小合适的空闲内存,返回给对应的进程。

这里虽然通过此处的数据结构,可以一定程度提高效率,整体来说,管理的空间比较多,相比之下还是一个耗时操作。

销毁一个进程,消耗的时间比较多;

调度一个进程消耗的时间比较多;

 

为了解决上述问题,就引入了"线程" Thread

线程也叫做"轻量级进程"

创建线程,比创建进程更快;

销毁线程,比销毁进程更快;

调度线程,比调度进程更快;

线程的特点:

1.每个线程都可以独立的去CPU上调度执行。

2.同一个进程的多个线程之间,公用一份内存空间和文件资源

(创建线程的时候,不需要重新申请资源了,直接复用之前已经分配给进程的资源,省去了资源分配的开销,于是创建效率就更高了)

虽然线程可以提高效率,但是也不是说

线程的数目越多越好。

d7ad59763b94439b9fa03656b1bf131d.png

当线程数目过多,效率无法进一步的提升了,反而会因为要调度的线程太多了,使调度的开销更大,反而会降低效率。

而且,当线程数目多了,可能会产生一定的冲突!!(线程不安全问题)

一个线程抛出异常,如果没有妥善处理就容易把整个进程带走(崩溃),此时其他线程自然也就随之消亡。

b328e8916e8048b0b40c543ddb555b8c.png

进程和线程的区别:

1.进程包含线程,一个进程里面可以有一个线程,也可以有多个线程。

2.进程和线程,都是用来实现并发编程场景的,但是线程比进程更轻量,更高效。

3.同一个进程的线程之间,共用一份资源(内存+硬盘),省去了申请资源的开销。

4.进程和进程之间,是具有独立性的,一个进程挂了不会影响到别人。

但是线程和线程之间(前提是同一个进程内),是可能会相互影响的。(线程安全问题+线程出现异常)

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

 

 

 

 

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值