1.并发编程基础

目录

  • 概述
  • 线程和进程
  • 并发和并行
  • 线程上下文切换
  • 线程的一生
    • wait与sleep的区别
  • 结束

概述

线程和进程

  • 进程:是指内存运行的一个应用程序,是系统运行程序的基本单位,是程序的一次执行过程
  • 线程:是进程中的一个执行单元,负责当前进程中任务的执行,一个进程会产生很多线程

两者主要区别:每个进程都有独立内存空间。线程之间的堆空间和方法区共享,线程栈空间和程序计数器是独立的。线程消耗资源比进程小的多。

并发和并行

  • 并发Concurrency:同一时间段,多个任务都在执行,单位时间内不一定是同时执行
  • 并行Parallel:单位时间内,多个任务同时执行,单位时间内一定是同时执行。
  • 并发是一种能力,并行是一种手段

注意: 并行处理是基于硬件CPU的是固定的,而并发处理的能力是可以通过设计编码进行提高的。
在这里插入图片描述

线程上下文切换

一个CPU同一时刻只能被一个线程使用,为了提升效率CPU采用时间片算法将CPU时间片轮流分配给多个线程。在分配的时间片内线程执行,如果没有执行完毕,则需要挂起,将CPU让给其它线程。

过程:

  • 1.CPU切换线程,会将当前线程的执行位置记录下来,用于下次执行时找到准备位置
  • 2.线程执行位置的记录与加载过程就叫做上下文切换
  • 3.线程执行位置记录在程序计数器

线程的一生

线程的生命周期六种状态:

  • new (新建)
  • runnable (可运行)
  • terminated (终止)
  • blocked (锁阻塞)
  • waiting (无限等待)
  • timed_waiting (超时等待)
    在这里插入图片描述

wait与sleep的区别

  • 主要区别:sleep() 方法没有释放锁,wait()方法释放了锁
  • 两者都可以暂停线程执行:wait()常用于线程间交互/通信,sleep()用于暂停线程执行
  • wait()方法被调用后,需要别的线程调用同一个对象的notify和notifyAll,超时苏醒使用wait(long)
  • sleep()方法执行完成后,线程会自动苏醒。

结束

并发编程基础概念就结束了,如有疑问,欢迎评论区留言。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大力说企微入门系列第二课:搭建体系

对于大部分人来说,学习有三动: 学习之前非常激动; 学习时候非常感动;学习之后是一动不动; 不知道大家看了上一课的《大力说企微入门系列第一课:企业微信的注册验证和认证》之后,是一动不动还是…

在电脑PC端可以分类记笔记的软件选择哪个?

选择用电脑来记录笔记是比较便捷的,电脑屏幕比较大,操作起来比较便捷。但是很多人用电脑来记录笔记,通常会使用电脑上自带的记事本、文档记事工具来整合笔记,打开文档记事本类的软件,密密麻麻的文字呈现出来。 选择用…

剪辑视频怎么把说话声音转成文字?

短视频已然成为了一种生活潮流,我们每天都在浏览各种短视频,或者用视频的形式记录生活,在制作视频的时候,字幕是一个很大的问题,给视频添加字幕可以更直观、更方便浏览。手动添加太费时间,下面就给大家分享…

想做副业在哪里找?做好这些副业平台就够了

每个人在生活中都有一些额外的需求和理想,所以越来越多的人开始寻找副业来实现小目标。但是,但是寻找副业的过程并不容易,需要考虑到自己的时间和能力,还有选择一个靠谱的平台。其实,副业平台并不太难,只要…

【LeetCode刷题】--9.回文数

9.回文数 class Solution {public boolean isPalindrome(int x) {if(x < 0){return false;}int tmp x, sum 0;boolean flag false;while(x ! 0){sum sum * 10 x % 10;x / 10;}if(sum tmp){flag true;}return flag;} }

服务器IPMI管理操作

简介&#xff1a;智能平台管理界面&#xff08;IPMI&#xff0c;Intelligent Platform Management Interface)是管理基于 Intel 结构的企业系统中所使用的外围设备采用的一种工业标准&#xff0c;用户可以利用IPMI监视服务器的物理健康特征&#xff0c;如温度、电压、风扇工作状…

requests 技术问题解决流程:从问题重现到测试验证

在 #homedesign 项目中&#xff0c;用户 jimmysisonlucas 报告了一个bug。根据他的描述&#xff0c;他希望解决这个bug。然而&#xff0c;由于他没有提供详细的bug描述&#xff0c;我们无法确定具体的bug是什么。 问题的解决流程&#xff1a;从bug重现到测试验证 尽管我们没有…

Linux内核调试篇——获取内核函数地址的四种方法(一文解决)

在内核调试中&#xff0c;经常需要知道某个函数的地址&#xff0c;或者根据函数地址找到对应的函数&#xff0c;从而进行更深一步的debug。 下面介绍四种获取内核函数地址的方法&#xff1a; 1、System.map 在编译Linux内核时&#xff0c;会产生一个内核映像文件System.map&…

低代码平台全解析:衍生历程、优势呈现与未来趋势一览无余

在数字化时代&#xff0c;应用程序的开发与更新已成为企业保持竞争力的关键。传统的编码方式&#xff0c;虽然精细且功能强大&#xff0c;但耗时且要求开发者具备较高的技术水平。在这样的背景下&#xff0c;低代码开发平台的出现无疑为企业带来了福音。 低代码开发平台是一种创…

开关电源测试方法分享:开关电源关机维持时间的测试步骤、测试标准

开关电源关机维持时间是指切断电源后输出电压下降到稳压范围外为止的时间。关机维持时间是开关电源测试项目之一&#xff0c;测试时需要用到交流电源、电子负载、示波器等测试设备。那么开关电源测试系统要如何测试关机维持时间呢? 开关电源关机维持时间的测试步骤 关机维持时…

Leetcode—53.最大子数组和【中等】

2023每日刷题&#xff08;三十四&#xff09; Leetcode—53.最大子数组和 前缀和算法思想 参考灵茶山艾府 实现代码 #define MAX(a, b) ((a > b) ? (a) : (b)) #define MIN(a, b) ((a < b) ? (a) : (b)) int maxSubArray(int* nums, int numsSize) {int ans INT_…

Springboot+vue的机动车号牌管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的机动车号牌管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的机动车号牌管理系统&#xff0c;采用M&#xff08;model&#xff09…