随笔篇-多线程世界的来龙去脉

2023-11-15

感谢原创的整理,以下是原文作者连接
原文:https://zhuanlan.zhihu.com/p/122010626

以下为摘抄概要整理
起因:

        有时候学习知识总觉的串联不起来,脑海中总是缺少一些粘合剂似乎,这些粘合剂,却很关键,它可以把学过的知识点,
        修复粘合成一个完整强壮的知识树,存于脑海中。
        粘合剂的名字叫做:概括!

前缀:

  1. 进程
    操作系统分配资源的基本单位,有独立的内存空间,通信效率低,切换开销大
  2. 线程
    CPU调度的基本单位,共享父进程的资源,通信效率高,切换开销小

线程

  • 使用线程目标:
    使用线程是为了提高程序性能而线程解决的是IO密集型问题CPU利用率问题。

IO密集:指的是有大量的操作需要读/写,cpu的计算能力没有利用,CPU处于等待状态,这种情况就是BIO模式。(所以cpu等待的时候我们就创建新的线程让cpu干其他活)
计算密集:单CPU多线程不能解决计算密集问题,效果甚至比单线程更差。

多线程带来的问题

1 线程的切换:
2 共享资源的控制。
解决办法:
使用锁来解决,线程的同步工具 synchroized AQS系列的锁

线程的挂起与唤醒

同步工具涉及线程的挂起与唤醒,线程挂起与唤醒涉及到cpu切换上下文,毕竟每个挂起的线程信息需要存储,存储和切换这是cpu做的事情。

例如:某个他线程调用了notify() ,最终反馈到cpu中是,cpu去唤醒在挂起的列表中,需要唤醒的线程。

线程的管理

  • 线程切换的开销
  • 计算机的内存毕竟是有限

管理目标:
1.降低资源消耗

2.提高响应速度

3.线程可管理性

java中,提供了很多线程池实现类。

  1. newCachedThreadPool()

  2. newFixedThreadPool()

  3. newScheduledThreadPool()

  4. newSingleThreadExecutor()

感谢原创的整理,以下是原文作者解读
原文:https://zhuanlan.zhihu.com/p/122010626

如果看官觉得有点用,点赞一下 鼓励一下我吧!

欢迎添加公众号与您分享更多记录
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随笔篇-多线程世界的来龙去脉 的相关文章

  • SpringBoot 中 MyBatis-Plus 集成动态多数据源过程(亲测可用)

    使用场景 当你的项目中使用到多个数据源或者需要在程序运行过程中动态的添加数据源时可以参考本文中的实现 这里使用的是dynamic datasource spring boot starter 它是一个基于springboot的快速集成多数据
  • java性能检测工具:jvisualvm

    前戏 安装JDK并配置好环境变量 1 win R 输入cmd进入命令行界面 2 输入 jvisualvm 可以看到本地的java进程 3 查看CPU 内存使用情况 右下角 运行 运行的线程 休眠 调用sleep 方法的线程 等待 调用wai
  • Python 3 安装 redis 客户端

    1 去GIThub 上下载 redis py 2 然后进入源码目录 执行 sudo python3 setup py install 就可以了 这里踩了一个坑 就是我按照GITHub上介绍的方式 sudo python setup py i
  • 华为UOS欧拉版 K3S+Rancher 安装完全版

    文章目录 K3S服务 happy path安装过程 1 准备工作 1 1 修改网卡名称为eth0 1 2 切换yum源 1 3 关闭防火墙以及selinux 1 4 修改主机名 并修改hosts 1 5 在UOS 基于华为欧拉 上安装doc
  • 中国高房价时期it从业人员指导工资简易计算公式-国标(GB54321)

    版权所有 瞿正峰 转载请保留版权声明 http blog csdn net gonxi 中国高房价时期it从业人员指导工资简易计算公式 在线计算器 http www gonxi com 快去算算你的工资 A 10年期间的平均每月工资 Wa
  • 工作三年经验总结

    一 职业规划 今年年初 职业规划方面愈发的清晰 将毕业时制定的前10年职业规划 前三步 拓展到了20年 后三步 今年5月跳槽来到网易 也标志着前10年第二步 大厂的历练 开始 二 2018计划完成情况 1 生活 1 备孕一个猪宝宝 2 攒首
  • 监听屏幕滚动开始和结束事件(scroll start 和scroll stop)

    背景 最近在写一个专题页 产品要求右边导航栏在滑动的时候收起 滑动停止时显示 这样就需要监听到屏幕滚动 scroll start 事件和滚动结束 scroll end 事件 但是又不能为了这个功能专门引入jQuery mobile这个库 所
  • 网页跳转新页面打开,保留当前站点

    原本这一句上没有 target blank 加上这个属性之后 就可以跳转新页面 不用离开当前站点了 备注 当然也可以在链接上右键打开新页面 由于我个人不太习惯 所以就尝试了一下 好像更麻烦 因为这样也只能改一个链接的跳转方式
  • pyecharts 安装报错 ModuleNotFoundError: No module named ‘pyecharts_snapshot‘

    1 出错原因 因为用下面语句安装pyecharts时 默认会安装最新版本的pyecharts python解释器版本更新的速度慢很多 现在的python解释器默认的是与0 1 9 4版本的pyecharts配合 你安装最新的 python解
  • 作为一个面试官,我是怎么来面试测试人员的?

    其实之前关于面试也说了好多 知乎上我也开过一个面试的Live 也有幸被选进了知乎2016精选 不过今天我想说的是在实际过程中如果我去面试了 我会怎么进行面试 会问什么问题 会遵照哪些原则 我本身的行事风格就是比较特殊的 希望对广大应聘者和面
  • 后台添加cookie,前端jsp获取不到

    在开发中遇到问题 后台 Cookie c new Cookie Cookie 11111111111111111111 c setPath response addCookie c 在前端jsp获取不到方法 Cookie cc reques
  • BurpSuite扩展--python扩展运行环境配置

    BurpSuite扩展 python扩展运行环境配置 Burp扩展可以用Java Python或Ruby编写 Java扩展可以直接在Burp中运行 而无需任何其他配置 在安装以Python或Ruby编写的扩展之前 您需要下载Jython或J
  • 【狂神Java学习笔记】Java基础

    狂神Java学习笔记 Java基础 参考网址 https www bilibili com video BV12J41137hu 一 注释 单行注释 多行注释 文档注释 用于生产说明文档 二 标识符和关键字 1 标识符概念 在java程序中
  • Conda建立虚拟环境及torch安装

    本人的系统环境 Ubuntu 16 04 Cuda 9 0 Cudnn 7 0 5 Python 3 7 Anaconda 3 这里推荐大家使用Anaconda 可以比较方便的创建Python虚拟环境 避免不同的Python库之间产生冲突
  • 2020web前端面试整理

    背景 2020年是比较特殊的一年 由于新冠影响导致很多事情发生了变化 同时也改变了人们的一些常规习惯 就拿换工作来说 为了减少大家的出行和接触 线上视频 电话面试成了趋势 但是万变不离其宗 技术才是王道 下面是个人近期的一些面试经验和需要大
  • 保留指定位数小数点的方法(五种)

    package feifan import java text DecimalFormat import java text NumberFormat public class YuoXiaoShuzi public static void
  • 2021->2022

    也就随便写写了 记得去年的年终和期望目标 我写了好多个方面的自我剖析 可能大概有三四千字吧 再回去看看 还是水了一些 这很正常 大多数人都是这样的 况且我比较佛系 复盘还是要的 期望还是要提的 虽然明知一年过后 可能达成的不多 但这也是一次
  • 蓝牙协议规范--L2CAP

    L2CAP 分析 记住一点 软件和硬件分开理解 数据经由物理通道交互 上层通道由各层协议打通 L2CAP 全称为逻辑链路控制与适配协议 Logical Link Control and Adaptation Protocol 位于基带层之上
  • 成功解决 vscode远程调试python

    welcome to my blog 微软新出的插件 非常方便远程调试 不需要改动代码 简单9步 配置远程调试环境 第一步 按ctrl shift x 输入remote development 安装 第二步 按ctrl shift p 输入
  • 人生之路漫长

    人生不同的时间会遇到不同的人和事 你不知道这些事会对你以后产生什么影响 只希望后面有好的收获

随机推荐

  • 读标准03-IEEE1451.5标准协议尝鲜实现

    读标准03 IEEE1451 5标准协议尝鲜实现 前面两个文章里面已经详细描述了 TEDS 和 Message 的组成 这里 C 的实现分两个部分 分别对 TEDS 和 Message 的 数据结构实现 与 帧打包与解析的算法实现 第一版
  • java 程序猿必备技能——Debug详解

    Debug的引入和概述 IDEA中Debug的使用 Debug演示 一 前言 在我们以往的程序执行中 只能看到控制台上展示的最终结果 无法直观清晰地看到程序内部每一个变量的加载 更迭 以及代码执行的内部逻辑 而Debug 断点调试 可以让我
  • python3最新版本-mac下安装Python3.*(最新版本)

    前言 mac系统自带python 不过以当前mac系统的最新版本为例 自带的python版本都是2 版本 虽然不影响老版本项目的运行 但是python最新的3 版本的一些语法与2 版本并不相同 网上的教程大神们也肯定都更新出了最新版的教程
  • VC实现对话框文件拖拽

    使用过QQ的人都知道 只要把文件拖拽到消息框中就可以传送文件了 那么这种功能是如何实现的呢 其实很简单 只需要响应一个WM DROPFILES消息就可以了 在基于对话框的程序中 默认是没有这个消息的 按下Ctrl W 弹出类向导对话框 选择
  • kettle通过java步骤获取汉字首拼

    kettle通过java步骤获取汉字首拼 用途描述 一组数据 需要获取汉字首拼后 输出 实现效果 添加jar包 pinyin4j 2 5 0 jar 自定义常量数据 Java代码 完整代码 import net sourceforge pi
  • 用指针交换两个数

    题目描述 利用指针交换用户输入的两个数 输入 测试次数t 共t行 每行两个整数 输出 共t行 每行输出交换后的两个整数 输入样例1 2 1 2 35 21 输出样例1 2 1 21 35 思路分析 用a和b两个变量把数存储下来 再用两个指针
  • swift4.0自定义UITabBarController +UINavigationController

    首先开始项目之前我们需要搭建框架 首选UITabBarController UINavigationController 下面的代码是整理好的 包括我们会遇到的问题解决方法都在里面 自定义UINavigationController cla
  • TypeScript算法-19. 删除链表的倒数第 N 个结点

    TypeScript算法 19 删除链表的倒数第 N 个结点 思路 代码 思路 要删除倒数第N个节点 就要找到倒数第N 1个节点 然后直接将next指针指向next next即可 为了找到倒数第N 1个节点 可以使用快慢指针 让快指针先走n
  • openGL法线贴图和纹理贴图结合使用,以增强三维物体表面细节

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一 法线贴图 二 代码 1 主程序 2 着色器程序 运行效果 源码下载 前言 凹凸贴图的一种替代方法是使用查找表来替换法向量 这样我们就可以在不依赖数学函 数的情况下 对凸
  • JS复选框:获取选中的checkobx

    div div
  • 异常检测怎么做,试试孤立随机森林算法(附代码)

    点击上方 程序员小乐 关注 星标或置顶一起成长 每天凌晨00点00分 第一时间与你相约 每日英文 If someone hurts you please continue good good to enjoy life hurt the s
  • CentOS7中Docker常规安装Redis

    一 下拉redis docker pull redis 二 处理redis宿主机配置文件相关 mkdir p app redis data mkdir p app redis conf 三 上传一份redis官网默认原始的redis con
  • 超级详细的 Maven 教程(基础+高级)

    1 Maven 是什么 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具 一个 Maven 工程有约定的目录结构 约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环 就
  • PROFIBUS DP从站开发 VPC3源程序分析---user_chk_new_cfg_data(void)

    以下程序注释由成都地质学院霸王猫添加 引用时请尊重作者劳动成果 标明引用者来自成都地质学院霸王猫 UBYTE user chk new cfg data void 入口参数 无 出口参数 无 返回值 VPC3 CFG OK VPC3 CFG
  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL
  • git-linux-xll?x11-unix 挖矿病毒问题定位与处理

    1 dev服务器出现git用户启动的进程cpu200 的情况 网络传输在高速流量流出 2 首先关停gitlab服务 3 杀死进程后 会马上再出现 无定时任务 4 使用lsof p PID 查看 其中一个名字为 xll unix的文件 该文件
  • put_user

    Linux设备驱动开发笔记 1 复制链接 0 0 skyily 白手起家 帖子 108 主题 105
  • 分组对列扁平化(列转换行 关系型转换NoSQL)

    前言 关系型数据库要符合第一范式即原子性 因此字段多值情况只能分行处理 如下表 假设keys是terms appl dt 则no predict pay dt actual pay dt 是多值 如果要转换成NoSQL或collection
  • 连续七天登录-在线人数最多

    连续七天登录 select id count from select date add dated rown as startdate from select row number over PARTITION by id order by
  • 随笔篇-多线程世界的来龙去脉

    文章目录 线程 多线程带来的问题 线程的挂起与唤醒 线程的管理 如果看官觉得有点用 点赞一下 鼓励一下我吧 感谢原创的整理 以下是原文作者连接 原文 https zhuanlan zhihu com p 122010626 以下为摘抄概要整