自学内容网 自学内容网

Java并发编程学习之从资本家的角度看多线程和并发性(一)


前言

这篇文章是打开Java多线程和并发编程的大门的开始,如标题《从老板的角度看多线程和并发》,当看了关于多线程的几篇专栏后,总是没法很好的理解,多线程,并发编程里面的许多专业名词,直到我把我的身份代入了资本家,噢吼~,豁然开朗。。。


前置知识

聊聊CPU(中央处理器)的发展史:CPU是从单核单线程开始到多核多线程开始演进的
1、单核单线程:最早的 CPU 只有一个核心(执行计算任务的基本单位),并且只能顺序执行指令
2、单核多线程:为了提高单核 CPU 的利用率,超线程技术使得一个物理核心可以模拟成两个逻辑核心,从而在同一时间执行更多的线程。
3、多核单线程:将多个核心集成到一个 CPU 芯片上,提高并行处理能力
4、多核多线程:结合多核和超线程技术,进一步提升并行处理能力。
5、专用加速器和异构计算:引入 GPU、FPGA 和 ASIC 等专用加速器,形成异构计算架构
6、量子计算:探索未来的计算技术,利用量子比特进行计算。

在这里插入图片描述

一、单线程时代

当接到若干任务:
1、执行PDF批量转换为Word(需要10分钟)
2、执行生成统计报表(需要5分钟)
3、执行打开酷狗(需要5s)

(单核单任务:即使打开酷狗只需5s也需要等到前面的任务执行完才能轮到它)

(单核多任务:把1、2、3分为若干时间片,操作系统控制CPU执行任务1若干时间,记录执行位置,执行任务2或3若干时间,以使得每个任务都有机会运行,虽然增加了切换的成本但是这样的好处就是运气好的话打开酷狗再也不用等待很久了。

二、为什么要有多线程,多线程的优点?

问:这批零件的生产周期太长了,能不能再快一点?
答:能,再招人。

1、资源利用率更好
你耕田来我织布这种形式,能在现有的生产资源得到更高的利用率。
2、处理更快
你耕田来我织布这种形式能在更短的时间完成耕田、织布这俩任务。

三、使用多线程会遇到什么问题?

单个工人时,拿到任务干就是了,多个工人时就要考虑更多了,任务的分配,工人的协同,资源的分配。

1、多个工人同时访问和使用同一个工具箱中的工具(竞态条件)
2、工人 A 和 B 互相等待对方持有的工具,导致两人都无法继续工作(死锁)
3、某些工人由于任务分配不均,长时间没有任务可做,导致工作效率低下(饥饿)
4、多个工人需要共享和修改同一个工具清单,需要确保工具清单的线程安全性(线程安全的数据结构)
5、某些决策可能影响工厂的整体效率(线程调度)
。。。。

四、多线程和并发编程的关系

控制好多线程的并发,保证多线程能高效、安全、协同的工作就是并发编程的关键。


总结

这篇文章是从代码层面跳出来,从全面的去理解并发编程,并发编程的核心问题无非就是
分工、同步、互斥
分工(任务的拆分)
同步(任务之间的相互协作)
互斥(线程安全)

接下来会介绍并发编程中的细化概念和常用工具类,跟着代码一步一步学习并发编程。


原文地址:https://blog.csdn.net/weixin_45549188/article/details/144244745

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!