Java多线程之并行并发傻傻分不清楚(二)

正文

单核时代

单核 CPU 情况下,线程实际上是串行执行任务的。操作系统这个 BOSS,手底下有个狗腿子叫任务调度器,将 CPU 的时间片段分给不同线程使用。

因为计算机的线程切换速度非常快,给人感觉就是同时运行的错觉。

一般将这种 线程轮流使用 CPU 的做法称为并发。一句话概括:微观上串行,宏观上并行

多核时代

当然,时代是在进步的,现在的计算机基本上是多核 CPU 了,什么双核四线程,八核十二线程的,归根结底都是为了提高 CPU 的利用率。

多核 CPU 下,每个核都可以调度运行线程,这时的线程可以是并行的。

假设一个 双核的 CPU 的核数恰好在处理两个线程,如 核 1 处理 线程 1;核2 处理线程 2,这种理想的情况我们可以称为并行


概念

并发:同一时间应对多件事情的能力

并行:同一时间动手做多件事情的能力


可能很抽象,我先把一个单核 CPU 比喻成一个程序员。他每天的开发任务有,写后端代码写前端代码测试代码、还特么得持续跟甲方沟通需求

如果他一个人轮流交替做这 4 件或多件事,这就是并发

可能老板“良心”发现,就多雇佣了 3 个实习生,实习生 A 负责前端、实习生 B 负责测试,而他负责后端,实习生 C 更甲方沟通需求,他们互不影响,这就并行



特点
  • 优点:

    多线程并发是为了提高程序的执行效率,可以尽可能的压榨CPU性能,像极了老板每天压榨你每一分每一秒。

  • 缺点

    线程过多会影响性能,毕竟上下文切换是有成本的;

    会占用过多的内存空间;

    如果多个线程在共享同一个资源,可能会发生死锁;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值