当前位置: 首页 > news >正文

进程线程的关系

举个例子   滑稽老师吃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.lryc.cn/news/338127.html

相关文章:

  • 一些 VLP 下游任务的相关探索
  • 【opencv】示例-pca.cpp PCA图像重建演示
  • C语言中的编译和链接
  • 如何将三方库集成到hap包中——通过IDE集成cmak构建方式的C/C++三方库
  • Towards Street-Level Client-Independent IP Geolocation(2011年)(第二部分)
  • 软件测试过程和测试生命周期
  • python-study-day1
  • 【Apache2】彻底删除 Apache2 服务器
  • C#:成绩等级转换
  • 每日OJ题_01背包③_力扣494. 目标和(dp+滚动数组优化)
  • vue3+element plus图片预览点击按钮直接显示图片的预览形式
  • GAMS104 现代游戏引擎 2
  • spring boot学习第十七篇:OAuth2概述及使用GitHub登录第三方网站
  • 基于springboot的电影评论网站系统源码数据库
  • javaScript手写专题——实现instanceof/call/apply/bind/new的过程/继承方式
  • C++11 新特性:tuple 元组
  • 最齐全,最简单的免费SSL证书获取方法——实现HTTPS访问
  • c语言->贪吃蛇实战技巧结合EasyX简单实现页面管理(简单实现)
  • C语言-详解内存函数
  • 【核心完整复现】基于目标级联法的微网群多主体分布式优化调度
  • Mac下安装NVM,NVM安装Node(附带NPM)
  • java之变量的作用域
  • CentOS 7软件安装全攻略:YUM命令详解与实战
  • 达梦关键字(如:XML,EXCHANGE,DOMAIN,link等)配置忽略
  • 2024/4/11 直流电机调速/PWM
  • 贝乐虎儿歌v6.8.0解锁高级版亲子学习儿歌
  • 计算机网络技术-RIP、0SPF和BGP协议的工作原理和应用
  • 机器学习——自动驾驶
  • Android 14 vold 分析(2)VolumeManager 和 NetlinkManger
  • 《黑马点评》Redis高并发项目实战笔记(上)P1~P45