线程和进程的联系和区别?

今天分享一道很基础但是很重要的Java面试题,答主回答可能有不完善的地方,欢迎大家在评论区讨论和指正!如果觉得答主的回答能对你有所启发,请点一个小小的赞!

比较通俗易懂的回答:

线程和进程的联系我们用做菜来举例:

假设今天过节,我们家要招待客人,想做一个四菜一汤,从整体上看,做菜的这个过程是在厨房里面进行的,此时这个厨房就可以看作为进程,而厨房里的锅是实际用来做饭的,此时锅就可以看作是线程,那么假如现在想要提高做菜的效率,我们可以使用多个锅同时做饭,此时的多个锅就可以看作我们的多线程技术。在这个厨房里有各种菜、调味品,这个可以看作CPU上的资源,这个厨房里的锅都可以使用同一种调味品,所以我们不难理解线程之间共用进程的资源。我们做饭时不一定从哪个菜开始做,同时做多样菜时我们不能集中看一个锅里,而是随着做菜的进度来注意和操作,此时我们就可以理解线程的特性(随机调度,抢占式执行)。我们要建立或者拆除一个厨房所需要的代价比买或者丢一个锅的代价要大得多,这里可以看到线程和进程的另一个区别:创建或撤销进程时的开销远比常见或撤销进程的开销大。

   

    用比较专业的回答就是:

    线程可以看作为轻量级的进程,是实际执行运算的最小单位。进程是线程的容器,一个进程包含一个或一个以上的线程,但是一个线程只能属于一个进程。线程作为调度和分配的基本单位,多个线程共享本进程的资源如内存、IO等,进程是资源的拥有者,多个进程之间资源独立。线程和进程一样都可以并发执行,同一个进程内的多个线程之间也可以并发执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值