Java 异步编程——为什么要使用多线程,以及在什么情况下使用多线程?

前言

单线程就是一个工人在搬砖,多线程就是多个工人在搬砖;在相同数量的砖要搬的情况下,多个工人搬砖肯定比一个人搬的快。

那多个工人做事一定比一个工人做事快吗?那不一定,不过大多数情况下是的。多线程只是可以同时接收多个任务,但不一定马上去执行任务。这里要看有多少资源(单核 or 多核)和做什么任务(计算密集型任务 or IO密集型任务)。基于这两个条件进行笛卡尔积形成的场景来分析单线程和多线程的工作效率。

单核:单核处理器指的是只有一个物理核心的处理器。物理核心是处理器中的实际计算单元,能够执行指令和处理数据。在单核处理器中,只能同时执行一个线程或进程。即使使用多线程编程,也只能通过时间片轮转的方式在不同线程之间进行切换,每个线程在某个时间片内独占处理器的执行时间。

多核:多核处理器指的是具有多个物理核心的处理器。多核处理器将多个物理核心集成到一个芯片上,每个核心都是一个独立的计算单元,能够并行执行指令和处理数据。每个核心可以独立地执行一个线程或进程,因此多核处理器可以同时执行多个线程或进程,提供更高的并行处理能力。

计算密集型任务:计算密集型任务是指那些主要依赖 CPU 运算能力的任务。通常涉及大量的数值计算、复杂的算法或模型运算,而对于 I/O 操作的需求相对较低,受限于 CPU 的运算速度。
IO密集型任务:I/O 密集型任务是指那些主要依赖于输入/输出操作的任务。这些任务通常需要频繁地进行文件读写、网络通信、数据库访问等 I/O 操作,而对于 CPU 的计算能力需求相对较低。

单核 + 计算密集型任务:

在单核情况下,只有一个物理核心处理器,多线程和单线程最终都落在一个核心处理器(CPU)去处理任务,此时的多线程只是分时段的获取同一个CPU处理任务。就好比工人使用一个计算器来记账,最

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值