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、某些决策可能影响工厂的整体效率(线程调度)
。。。。

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

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


总结

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/933622.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【爬虫】selenium打开浏览器以及页面

本篇探讨如何使用 selenium 打开浏览器 selenium 基础与网页打开 selenium 是一个广泛应用于自动化测试和网页抓取的工具,它能够模拟用户在浏览器中的各种操作。首先,我们需要根据指定的浏览器类型(这里以 Chrome 为例)打开网页…

【算法练习】162. 寻找峰值

题目链接&#xff1a;162. 寻找峰值 看思路图&#xff1a; class Solution { public:int findPeakElement(vector<int>& nums) {int left 0,right nums.size()-1;while(left<right){int mid left (right-left)/2;if(nums[mid]>nums[mid1]){right mid;}els…

Android SurfaceFlinger layer层级

壁纸作为显示的最底层窗口它是怎么显示的 1. SurfaceFlinger layer层级 锁屏状态dump SurfaceFlinger &#xff0c;adb shell dumpsys SurfaceFlinger Display 0 (active) HWC layers: -----------------------------------------------------------------------------------…

SAP Ariba Approval _Email Approval

Email Approval Example 当用户成为文档审批者时,SAP Ariba会向该用户发送电子邮件通知消息。 在以下情况下,批准人可以收到电子邮件通知: 有人提交或重新提交文件以获得批准 某人撤回文件 系统升级文档 系统即将向主管升级请求 如果多个用户共享一个群组职责,他们则会收到…

vue 封装全局方法及使用

1.找到项目中的utils定义js&#xff0c;这个js存放全局可使用的方法 2.去项目中main.js中引入注册 import publicFun from ./utils/test Vue.prototype.$publicFun publicFun;3.项目使用 ddd(){this.$publicFun.testwen()},

MQTT消息服务器mosquitto介绍及说明

Mosquitto是一个开源的消息代理软件&#xff0c;支持MQTT协议&#xff08;消息队列遥测传输协议&#xff09;。MQTT是一种轻量级的发布/订阅消息传输协议&#xff0c;专为低带宽、不可靠网络环境下的物联网设备通信而设计。以下是关于Mosquitto服务器的一些介绍和说明&#xff…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)

续上篇博客&#xff08;长期更新&#xff09;《零基础入门 ArcGIS(ArcMap) 》实验一&#xff08;上&#xff09;----空间数据的编辑与处理&#xff08;超超超详细&#xff01;&#xff01;&#xff01;&#xff09;-CSDN博客 继续更新 目录 什么是拓扑&#xff1f; 1.3.5道路拓…

深信服ATRUST与锐捷交换机端口链路聚合的配置

深信服ATRUST业务口原来只配置使用一个电口&#xff0c;近期出现流量达到800-900M接近端口的极限带宽。由于设备没有万光口&#xff0c;于是只好用2个光口来配置链接聚合。 下需附上深信服ATRST端口配置的截图&#xff0c;由于深信服ATRUST与锐捷交换机端口只共同支持源mac目的…

简易图书管理系统

javawebjspservlet 实体类 package com.ghx.entity;/*** author &#xff1a;guo* date &#xff1a;Created in 2024/12/6 10:13* description&#xff1a;* modified By&#xff1a;* version:*/ public class Book {private int id;private String name;private double pri…

【1】数据分析基础(一些概念)

数据分析的五步&#xff1a; &#xff08;1&#xff09;提出问题&#xff1b;&#xff08;2&#xff09;收集数据&#xff1b;&#xff08;3&#xff09;数据处理和清洗&#xff1b;&#xff08;4&#xff09;数据分析&#xff1b;&#xff08;5&#xff09;可视化&#xff0c…

Spring Boot 3.0 + MySQL 8.0 + kkFileView 实现完整文件服务

Spring Boot 3.0 MySQL 8.0 kkFileView 实现完整文件服务 背景&#xff1a;比较常见的需求&#xff0c;做成公共的服务&#xff0c;后期维护比较简单&#xff0c;可扩展多个存储介质&#xff0c;上传逻辑简单&#xff0c;上传后提供一个文件id&#xff0c;后期可直接通过此i…

文生图模型开源之光!ComfyUI - AuraFlow本地部署教程

一、模型介绍 AuraFlow 是唯一一个真正开源的文生图模型&#xff0c;由Fal团队开源&#xff0c;其代码和权重都放在了 FOSS 许可证下。基于 6.8B 参数优化模型架构&#xff0c;采用最大更新参数化技术&#xff0c;还重新标注数据集提升指令遵循质量。在物体空间和色彩上有优势…

OpenAI12天 –第3天的实时更新,包括 ChatGPT、Sora、o1 等

OpenAI提前开启了假期&#xff0c;推出了为期 12 天的活动&#xff0c;名为“OpenAI 12 天”。在接下来的一周左右的每一天&#xff0c;OpenAI 都将发布现有产品的新更新以及新软件&#xff0c;包括备受期待的 Sora AI 视频生成器。 OpenAI 首席执行官 Sam Altman 表示&#x…

06_掌握Python列表、元组、字典、集合

学习完本篇内容,你将掌握以下技能: 列表、元组、字典、集合的创建与删除列表、元组、字典、集合的访问及遍历列表、元组、字典、集合的操作方法列表、元组、字典、集合的生成式列表的基本操作 # 列表的基本操作 # 创建列表 list1 = [1, 2,

Ubuntu Server 22.04.5 LTS重启后IP被重置问题

Ubuntu Server 22.04.5 LTS重启后IP被重置问题 最近在使用Ubuntu Server 22.04做项目开发测试时发现每次重启和关机后&#xff0c;所设置的静态IP地址都会回复到安装系统时所设置的ip Ubuntu Server 22.04 官网下载地址&#xff1a;Ubuntu官方下载地址 对虚拟机下安装Ubuntu感…

QtCreator UI界面 菜单栏无法输入中文

如下图红色所示的区域&#xff0c;直接输入是无法输入中文的&#xff1a; 解决方法&#xff1a;在右边的属性值里输入即可 也可以参考这位同学的解决方法&#xff1a;友情链接

SCI论文丨机器学习与深度学习论文

目录 第一章、ChatGPT-4o使用方法与技巧 第二章、ChatGPT-4o辅助文献检索、总结与分析 第三章、ChatGPT-4o辅助学术论文选题、创新点挖掘与实验方案设计 第四章、ChatGPT-4o辅助学术论文开题与大纲生成 第五章、ChatGPT-4o辅助学术论文写作马拉松活动介绍 第六章、ChatGPT…

ES语句——DSL(kibana语句)

一、查询操作 查看当前索引的数据结构 _mapping Get ai-open-log*/_mapping 查询当前索引下的文档数以及分片信息 _count Get ai-open-log*/_count { "count": 12345, //当前索引下的文档总数 "_shards": { //分片信息 "total&…

【sgUploadImage】自定义组件:基于elementUI的el-upload封装的上传图片、相片组件,适用于上传缩略图、文章封面

sgUploadImage源码 <template><div :class"$options.name"><ul class"uploadImages"><liclass"uploadImage"v-loading"loadings[i]"v-for"(a, i) in imgFiles && imgFiles.length ? imgFiles : 1…

NAT traversal 原理 | TCP / UDP/ P2P

注&#xff1a;本文为 “NAT traversal ”相关的几篇文章合辑。 未整理去重。 NAT 穿越技术原理 Li_yy123 于 2020-12-08 18:54:26 发布 一、NAT 由来 为了解决全球公有 IPv4 的稀缺&#xff0c;提出了 NAT 技术。NAT 是 Network Address Translation 网络地址转换的缩写。 …