深入了解电脑硬件以及多线程编程

news2024/12/23 20:46:36

文章目录

    • 认识计算机硬件与多核CPU的工作原理
      • 单核CPU
      • 多核CPU
      • 并发与并行
    • 深入了解进程、线程及其优先级
      • 进程与线程
      • 线程的创建与命名
      • 线程的优先级与控制
      • 线程的休眠与等待
    • 线程安全与锁机制
      • 同步与异步
      • 线程安全问题与锁
      • 可重入锁解决线程安全问题
    • 多线程间的通信与线程池的使用
      • 线程通信与生产者消费者模型
      • 线程池的优势与使用

在这里插入图片描述

🎉欢迎来到Java学习路线专栏~深入了解电脑硬件以及多线程编程


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
  • ✨博客主页:IT·陈寒的博客
  • 🎈该系列文章专栏:Java学习路线
  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️

在这里插入图片描述


认识计算机硬件与多核CPU的工作原理

计算机硬件,如内存、硬盘、CPU、显卡、声卡、网卡等,构成了现代计算机的基础。CPU被称为计算机的大脑,负责各种计算任务和控制操作。我们可以将多核CPU比作家庭的多位家庭成员,分工协作,提高效率:

单核CPU

单核CPU就像一个人,他需要做饭、洗碗、摘菜、拖地、洗衣服等所有家务活。这样的工作方式让人感到累并且效率低下。即使有些任务可以同时进行,但总体上仍然是按顺序一个一个来,导致工作效率低下。
在这里插入图片描述

多核CPU

多核CPU就像家庭中的多位成员,可以分工协作。一位成员负责做饭,另一位负责洗碗,另外两位可以同时摘菜和拖地。这样可以有效提高效率,让每个核心专注于不同的任务,共同完成工作。
在这里插入图片描述

并发与并行

在多线程编程中,我们经常遇到并发与并行的概念。并发是指多个任务交替执行,微观上是顺序执行,宏观上是看起来同时执行;而并行是指多个任务同时执行,微观上是高频切换,宏观上是真正的同时进行。例如,在代码中同时进行画图和播放音乐就是并行执行。
在这里插入图片描述

在这里插入图片描述


深入了解进程、线程及其优先级

进程与线程

进程是正在运行的程序,每个进程都有自己的内存空间和系统资源。线程是进程中的单个顺序控制流,是一条执行的路径。一个应用程序至少有一个线程。

线程的创建与命名

在Java中,创建线程有以下步骤:

  1. 定义一个类继承Thread,重写run()方法。
  2. 创建自定义类的对象。
  3. 启动线程,使用start()方法。

线程的名字可以通过setName(String name)方法设置,也可以通过构造方法进行设置,通过getName()方法获取。

线程的优先级与控制

线程的优先级可以通过setPriority(int newPriority)方法进行调整,默认优先级为5。优先级较高的线程在抢占式调度中更有可能获取资源。

线程的休眠与等待

线程可以通过sleep(long millis)方法进行休眠,使线程暂停执行一段时间。而join()方法可以使一个线程等待另一个线程执行完毕。
在这里插入图片描述


线程安全与锁机制

在这里插入图片描述

同步与异步

在多线程编程中,同步是按顺序一个一个来,而异步是无序的,可以同时有多个任务进行。这就好比公交车,同步是乘客一个一个上车,异步是挤上车的情况。

线程安全问题与锁

线程安全问题在多线程共享资源时会出现,比如多个窗口同时卖票。为了解决这个问题,我们可以使用锁机制。锁分为同步代码块和同步方法两种方式,可以避免多线程对共享资源的争夺。

可重入锁解决线程安全问题

通过可重入锁(ReentrantLock)可以更灵活地控制线程的锁定和解锁。使用Lock对象的lock()方法上锁,unlock()方法解锁。
在这里插入图片描述


多线程间的通信与线程池的使用

在这里插入图片描述

线程通信与生产者消费者模型

在多线程编程中,线程通信是一个重要的问题,特别是在处理同一资源时。生产者消费者模型是一个典型的案例,其中生产者负责生产资源,消费者负责消费资源,需要通过等待(wait)、唤醒(notify)和唤醒所有(notifyAll)等方法来实现线程间的协调。

线程池的优势与使用

线程池可以降低资源消耗、提升响应速度和增加线程的可管理性。通过Executors工具类可以方便地创建线程池,使用submit方法来执行线程任务。线程池的工作原理是通过任务队列对线程进行管理,合理利用线程资源。


🧸结尾


❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:

  • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
  • 【Java学习路线】2023年完整版Java学习路线图
  • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • 【Java实战项目】SpringBoot+SSM实战<一>:打造高效便捷的企业级Java外卖订购系统

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人脸检测 - mtcnn

文章目录 1. 人脸检测2. mtcnn2.1 概述2.2 网络结构2.2.1 构建图像金字塔2.2.2 P - Net2.2.3 R-Net(Refine Network):2.2.4 O-Net(Output Network): 3. 总结4. 代码示例4.1 mtcnn.py4.2 detect.py4.3 utils.py 1. 人脸…

架构演进及常用架构

1架构演进及常用架构 1.1单体分层架构 1.2 多应用微服务架构 1.3 分布式集群部署 部署 CDN 节点: 用户访问量的增加意味着用户地域的分散请求,如果所有请求都直接发送中心服务器的话,距离越远,响应速度越差,这时就需…

spring-boot-admin笔记

spring-boot-admin笔记 本篇教程是基于springboot 2.3.8.RELEASE版本 和spring-boot-admin-dependencies 2.3.0版本搭建spring-boot-admin的server端app pom配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.ap…

Java课题笔记~ 数据提交的方式

前四种数据注入的方式&#xff0c;会自动进行类型转换。但无法自动转换日期类型。 &#xff08;1&#xff09;单个数据&#xff08;基本数据类型&#xff09;注入 在方法中声明一个和表单提交的参数名称相同的参数&#xff0c;由框架按照名称直接注入。 &#xff08;2&#x…

GD32F103的DAC1

GD32F103的DAC1采用定时器1触发&#xff0c;DMA传输&#xff0c;将数据转换为电压输出到PA5引脚。 GD32F103的DAC为12位DA转换器,可以将12位的数据转换为电压,从外部引脚上输出; DAC_OUT0映射到PA4,DAC_OUT1映射到PA5; DACx引脚上的模拟输出电压: DACoutput DAC_DO * Vref/4…

Git命令详解

1 常用命令 1&#xff09;初始化本地仓库 git init <directory> 是可选的&#xff0c;如果不指定&#xff0c;将使用当前目录。 2&#xff09;克隆一个远程仓库 git clone <url> 3&#xff09;添加文件到暂存区 git add <file> 要添加当前目录中的所…

概念解析 | 长尾分布:从无处不在的‘少数派’中挖掘价值

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:长尾分布(Long-Tail Distribution)。 揭秘长尾分布:从无处不在的‘少数派’中挖掘价值 What is a Long Tail Distribution? (Definition & Example) - Statology 一、背…

Neo4j的使用场景_以及Windows版安装_欺诈检测_推荐_知识图谱---Neo4j图数据库工作笔记0003

可以看到使用场景,比如欺诈检测, 要建立图谱,才能进行,欺诈人员检测 可以看到图谱的各种应用场景 然后推荐引擎也需要,可以看到 在金融,旅行,求职招聘,保健,服务,媒体娱乐,都可以进行推荐 然后还有知识图谱 身份访问管理,这里,可以进行安全管理,可以挖掘出潜在关系,分析, 某…

Android学习之路(4) UI控件之Button (按钮)与 ImageButton (图像按钮)

本节引言&#xff1a; 今天给大家介绍的Android基本控件中的两个按钮控件&#xff0c;Button普通按钮和ImageButton图像按钮&#xff1b; 其实ImageButton和Button的用法基本类似&#xff0c;至于与图片相关的则和后面ImageView相同&#xff0c;所以本节 只对Button进行讲解&am…

Spring Security实现办公系统权限控制(含认证和授权流程、底层分析)

一、Spring Security介绍 1、Spring Security简介 Spring 是非常流行和成功的 Java 应用开发框架&#xff0c;Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架&#xff0c;提供了一套 Web 应用安全性的完整解决方案。 正如你可能知道的关于安全…

stop job is running for Advanced key-value store

今天虚拟机磁盘撑满了&#xff0c;本来还能凑合运行&#xff0c;结果重启了下&#xff0c;就报了这个 stop job is running for Advanced key-value store (1min 59s / no limit) 解决方式很简单&#xff0c; 1、虚拟机关电源&#xff0c;任务管理器&#xff0c;关闭VM&#x…

Spring Security用户授权

用户认证在上一篇用户认证 用户授权 总体流程&#xff1a; 在SpringSecurity中&#xff0c;会使用默认的FilterSecurityInterceptor来进行权限校验。在FilterSecurityInterceptor中会从SecurityContextHolder获取其中的Authentication&#xff0c;然后获取其中的权限信息。…

Linux(进程控制)

进程控制 进程创建fork函数初识fork函数返回值写时拷贝fork常规用法fork调用失败的原因 进程终止进程退出码进程常见退出方法 进程等待进程等待必要性获取子进程status进程等待的方法 阻塞等待与非阻塞等待阻塞等待非阻塞等待 进程替换替换原理替换函数函数解释命名理解 做一个…

Java 并发编程--Volatile、Synchronized和锁

一、Java内存模型&#xff08;JMM&#xff09; Java内存模型即Java Memory Model&#xff0c;简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型&#xff0c;所以JMM是隶属于JVM的。 从抽象的角度来看&#xff0c;JMM定义了线程和主…

react-native-webview使用postMessage后H5不能监听问题(iOS和安卓的兼容问题)

/* 监听rn消息 */ const eventListener nativeEvent > {//解析数据actionType、extraconst {actionType, extra} nativeEvent.data && JSON.parse(nativeEvent.data) || {} } //安卓用document&#xff0c;ios用window window.addEventListener(message, eventLis…

verilog学习笔记6——锁存器和触发器

文章目录 前言一、锁存器1、基本SR锁存器——或非门实现2、基本SR锁存器——与非门实现3、门控SR锁存器4、门控D锁存器 二、触发器1、 电平触发的RS触发器/同步SR触发器2、电平触发的D触发器/D型锁存器3、边沿触发的D触发器4、脉冲触发的RS触发器 三、边沿触发、脉冲触发、电平…

LVS-DR集群(一台LVS,一台CIP,两台web,一台NFS)的构建

一.构建环境 1.五台关闭防火墙&#xff0c;关闭selinux&#xff0c;拥有固定IP&#xff0c;部署有http服务的虚拟机&#xff0c;LVS设备下载ipvsadm工具&#xff0c;NFS 设备需要下载rpcbind和nfs-utils 2.实现功能 3.ipvsadm命令部分参数介绍 二.配置和测试 1.LVS设备 &…

re学习(32)【绿城杯2021】babyvxworks(浅谈花指令)

链接&#xff1a;https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA 提取码&#xff1a;b9xf wp:首先找不到main函数&#xff0c;然后寻找特殊字符串&#xff0c; 交叉引用 反汇编 主函数在sub_3D9当中&#xff0c;但是IDA分析错了 分析错误后&#xff0c;删除函数 创建函数 操…

Python学习笔记_基础篇(六)_Set集合,函数,深入拷贝,浅入拷贝,文件处理

1、Set基本数据类型 a、set集合&#xff0c;是一个无序且不重复的元素集合 class set(object):"""set() -> new empty set objectset(iterable) -> new set objectBuild an unordered collection of unique elements."""def add(self, *a…

人工智能时代的科学探索 | 《自然》评述

人工智能(AI)正越来越多地融入科学发现&#xff0c;以增强和加速研究&#xff0c;帮助科学家提出假设、设计实验、收集和解释大型数据集&#xff0c;并获得仅靠传统科学方法可能无法实现的洞察力。 过去十年间&#xff0c;AI取得了巨大的突破。其中就包括自监督学习和几何深度学…