进程线程的关系

举个例子   滑稽老师吃100只鸡

如何加快滑稽老师吃鸡的效率??

有一个方案,搞两个房间,两个滑稽老师  一个滑稽吃50只鸡,速度一定会大幅度增加

多进程的方案  创建新的进程  就需要申请更多的资源(房间和桌子)

另一个方案,使用多线程

房间和桌子还是那些,但是吃鸡的主角多了一个(这种方案,资源开销更小)

现在我们有两个滑稽,能够提高效率,如果引入更多的滑稽呢?

现在引入更多的线程,每个滑稽吃的鸡更小了,速度更快了

 (与之对应的,如果搞四套房间,成本就更高了)

此时这些滑稽老师,共享的同一份资源

引入的滑稽,是越多越好吗??
当引入的线程,达到一定数量之后,在继续尝试引入新的线程,好像就没有办法提升了

桌子坐不下了

当线程数量太多的时候,线程之间就会相互竞争CPU的资源(CPU核心数是有限的)

非但不会提高效率,反而还会增加调度 的开销

多线程问题还有一个重要的问题,线程之间,可能会打架

比如,一号滑稽和2号滑稽看上了同一个鸡大腿,同时伸手去拿,谁能拿到???存在诸多变数!!!!!!!线程之间起了冲突,就可能会导致代码中出现一些逻辑上的错误(线程安全问题)

多线程这种方式,不太好驾驭,主要还是因为这个东西,有一定的复杂

多线程还有一个问题,共享资源也会有副作用

1号和2号抢鸡大腿的时候,1号抢到了,2号没抢到,2号滑稽很生气

一个线程如果抛出异常,并且没有处理好,就可能会导致整个进程被终止

小结:

1,进程是包含线程的

2,每个线程,也是一个独立的执行流,可以执行一些代码,并且单独的参与到CPU的调度中。(状态,上下文,优先级,记账信息,每个线程都有自己的一份)

3.每个线程,有自己的资源,进程中的线程共用这一份资源(内存空间和文件描述符表)

进程是资源分配的基本单位,线程是调度执行的基本单位

4.进程和进程之间,不会相互影响,如果同一个进程中的某个线程,抛出异常,是可能会影响到其他线程,会把整个进程中的所有线程都异常终止

5,线程也不是越多越好,要能够合适。如果线程太多了,调度开销可能非常明显。

6.同一个进程中的线程之间,可能会相互干扰,引起线程安全问题

Q:如果面试官让你,转前端?转android?转测试行不行???

必须行!!!!!

 多线程编程

写代码的时候,可以使用多进程进行并发编程,也可以使用多线程进行并发编程

在Java中 不太推荐 很多和多进程编程相关的api,在Java标准库中,都没有提供

多线程在并发编程的时候,效率更高(频繁创建销毁的时候)

尤其是对于Java进程,是要启动Java虚拟机的

启动Java虚拟机,这个事情的开销更大

搞多个Java进程就是多个Java虚拟机

系统提供了多线程编程的api ,java标准库,把这些api封装了在代码中就可以使用了

java中提供的api,Thread这样的类

Demo 实例

看一些第三方库文档   当开始上手,就应该要找demo/tutor/example/get  strat

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

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

相关文章

Python编写一个抽奖小程序,新手入门案例,简单易上手!

“ 本篇文章将以简明易懂的方式引导小白通过Python编写一个简单的抽奖小程序,无需太多的编程经验。通过本文,将学习如何使用Python内置的随机模块实现随机抽奖,以及如何利用列表等基本数据结构来管理和操作参与抽奖的人员名单。无论你是Pytho…

贪心算法:柠檬水找零

题目链接:860. 柠檬水找零 - 力扣(LeetCode) 收的钱只能是5、10、20美元,分类讨论:收5美元无需找零;收10美元找零5元;收20美元找零15美元。其中对于找零15美元的方案有两种,此处涉及…

mysqlySQL中启用慢查询日志并设置阈值

要在MySQL中启用慢查询日志并设置阈值,可以按照以下步骤进行: 编辑MySQL配置文件:打开MySQL的配置文件(通常是my.cnf或my.ini),在[mysqld]部分添加或修改以下行来启用慢查询日志并设置阈值: s…

一种基于镜像指示位办法的RingBuffer实现,解决Mirror和2的幂个数限制

简介 在嵌入式开发中,经常有需要用到RingBuffer的概念,在RingBuffer中经常遇到一个Buffer满和Buffer空的判断的问题,一般的做法是留一个单位的buffer不用,这样做最省事,但是当RingBuffer单位是一个结构体时&#xff0…

设计模式-外观模式(Facade)

1. 概念 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一群接口。外观模式的主要目的是隐藏系统的复杂性,通过定义一个高层级的接口,使得子系统更容易被使用。…

房屋鉴定研究院报告系统

一、项目背景与意义 随着城市化进程的加速和房地产市场的蓬勃发展,房屋安全问题日益受到社会各界的广泛关注。房屋鉴定作为确保房屋安全的重要手段,对于保障人民群众生命财产安全、维护社会稳定具有重要意义。然而,传统的房屋鉴定方式存在诸…

webpack-loader的使用

引入css后执行打包命令 "build": "npx webpack --config wk.config.js"发现报错: webpack默认只能处理js其他的像css,图片都需要借助loader来处理 css-loader loader可以用于对模块的源代码进行转换,可以把css看成一个模块&…

AWS被误扣费了,怎么解决?

有时在使用aws时,可能会无意中被AWS扣费,对于如何处理这个问题,作为aws的合作伙伴,接下来由九河云进行讲解: (1)审查账单:首先,您需要仔细审查AWS账单,了解具…

并发学习27--多线程 Tomcat 线程池

Tomcat连接器的线程池 socketProcessor也是个线程 Executor处理线程是按照JDK线程池方法处理,优先选用核心线程,再用救急线程,再去阻塞队列,最后采用拒绝策略。 Tomcat线程池与ThreadExecutorPool的区别 Tomcat中的配置 Tomcat …

kafka快速入门+应用

Kafka, 构建TB级异步消息系统 1.快速入门 1.1 阻塞队列 在生产线程 和 消费线程 之间起到了 , 缓冲作用,即避免CPU 资源被浪费掉 BlockingQueue 解决 线程通信 的问题阻塞方法 put 、 take生产者、消费者 模式 生产者:产生数据的线程…

登录加载动画

实现登录中 … 三个点的loading动画 <template><div><el-input type"password" placeholder"请填写密码" autocomplete"new-password"v-model"password" keyup.enter.native"login" show-password clearable…

Word中图表题注样式自动编号

需求 在写论文的时候&#xff0c;希望图表题注是下面的样子&#xff0c;其中图号表示为&#xff1a;章的编号-本章中图的序号&#xff0c;而且都是小写数字。 网上找的方法大多是使用 “插入题注” 来插入&#xff0c;此时章的编号是大写的&#xff0c;如“图一-1”。然后再通…

后台权限控制及动态路由

需求 后台系统需要能实现不同的用户权限可以看到不同的功能。 用户只能使用他的权限所允许使用的功能。 功能设计 之前在我的SpringSecurity的课程中就介绍过RBAC权限模型。没有学习过的可以去看下 RBAC权限模型 。这里我们就是在RBAC权限模型的基础上去实现这个功能。 表分…

Web前端-HTML

黑马程序员JavaWeb开发教程 一、初识web前端 1、 标准也称为网页标准&#xff0c;由一系列的标准组成&#xff0c;大部分由W3C负责指定 2、 三个部分组成 HTML&#xff1a;负责网页的结构&#xff08;页面元素和内容&#xff09;CSS&#xff1a;负责网页的表现&#xff08;页…

STL--pair 数对

pair 数对&#x1f357; pair是一个模板类,使用时需要引用文件 #include <utility>//通用工具pair可将两个value处理为一个元素。C标准库内多处用到了这个结构。尤其容器 map、unordered_map和unordered_multimap就是使用pair来管理其内部元素(key_value),任何函数如果…

ppt技巧:如何将Word文档大纲中导入到幻灯片中?

在PowerPoint中&#xff0c;将Word文档的大纲导入到新的幻灯片是一种非常实用的技巧。以下是详细的步骤&#xff1a; 首先&#xff0c;需要打开PowerPoint软件并打开原始的幻灯片文件。 在PowerPoint的顶部【开始】菜单栏中&#xff0c;找到并点击“新建幻灯片”按钮&#xff0…

【力扣】142. 环形链表 II

142. 环形链表 II 题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&am…

微信小程序全屏开屏广告

效果图 代码 <template><view><!-- 自定义头部 --><u-navbar title" " :bgColor"bgColor"><view class"u-nav-slot" slot"left"><view class"leftCon"><view class"countDown…

Map相关面试答案(都是简单版

一、HashMap的扩容机制 在1.7中 1、先生成新数组 2、遍历老数组中每个位置上的链表的所有节点 3、取每个节点的key&#xff0c;计算出每个元素在新数组中的下标&#xff0c;并添加到新数组中&#xff0c;这里用的是头插法。 4、转移完毕后将新数组复制给hashMap的table属性 1…

Android OpenCV 概述、优缺点及应用场景分析

摘要 随着移动设备性能的不断提升&#xff0c;安卓平台上的计算机视觉应用日益增多。OpenCV作为一个开源的计算机视觉库&#xff0c;在安卓开发中扮演了重要角色。本文将对安卓OpenCV进行概述&#xff0c;并深入探讨其优缺点以及在不同场景下的应用&#xff0c;为开发者提供参考…