JUC并发:

news/2025/3/19 21:04:18/文章来源:https://www.cnblogs.com/xiaoxianglu/p/18781813

JUC并发:

进程:进程相当于程序的是实例化,是负责资源管理的,在java中进程作为资源分配,管理的最小单位;

线程:一个线程就是一个指令流,负责将指令按一定顺序交付给CPU,在java中,线程作为一个最小的调度单位【CPU根据线程找指令】;

在windows中,进程是不活动的,只是作为线程的容器【线程相当于进程的子集】;

进程通信【基本相互独立】:

  • 同一台计算机的进程通信称之为 IPC;
  • 不同计算机的进程通信:HTTP;

线程在进程中,它们共享进程内的内存,资源;

线程内的指令执行完了,线程也就结束了;

任务调度器【将cpu时间片分给不同的线程使用】:多线程并发【concurrent】;

并行【parallel】;

同步:需要等待结果返回,才能继续顺序执行,【阻塞】;

异步:不需要等结果返回,多线程是异步调用;

Thread【线程】 和 Runnable【任务】:

  • 组合关系优于继承关系;
  • FutureTask是进一步具有返回值,和异常的Runnable;

查看进程和线程方法:

# windows
tasklist #查看进程
taskkill #杀死进程
#linux
ps -fe #查看所有进程
ps -fe | grep java
kill #杀死进程

线程运行原理:

  • jvm由堆,栈,方法区【类的字节码】组成,其中的栈内存就是线程使用,每一个线程启动,虚拟机都会为其分配一个栈内存;
    • 每个栈由多个栈帧组成,对应每次方法调用时,所占用的内存;
    • 每个线程只有一个活动栈帧,对应当前正执行的那个方法;
    • 每个线程具有一个程序技术器,存放下一次要运行的代码,交给cpu;
    • 每一个线程【相互独立】的组成:
      • 程序计数器;
      • 方法的栈帧【相互独立】的创建:
        • 局部变量表,方法返回地址【退出地址】,锁记录,操作数栈;
    • 线程上下文切换:
      • 被动的上下问切换:
        • 线程时间片用完;
        • 有更高优先级线程需要运行【eg 垃圾回收器】;
      • 主动的线程切换:
        • 线程调用了:sleep, yield, join, pack, sychronized, lock等函数;
      • 由程序计数器记录下一次将要运行的指令,并且保存每个栈帧的信息【线程太多,影响性能】;

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

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

相关文章

Django数据库迁移命令

Django数据库迁移命令 迁移命令 migrate python manage.py migrate # 全部项目 python manage.py migrate AppName # 一个项目 执行迁移命令必须确保当前在项目目录下(执行ls命令能看到 manage.py文件), 然后使用 python manage.py migrate 即可。 如果IDE为pycharm也可以…

记录一个因为电平转换的问题

调试电赛三子棋的棋盘时,发现了一个很让人抓狂的问题(因为我旧的原理图是霍尔全部的引脚全部引了出来,单片机用18个引脚去直接读取),但是最近因为一些事情,需要重新复刻 这个项目,于是乎我使用了并转串芯片,74hc165,单片机仅需三个引脚即可获取所有端口的状态,但是调…

什么是供应链管理?四个流是什么?一文彻底搞懂!

你有没有遇到过这些问题?客户下单了,但生产还没跟上,结果交货延期,客户疯狂催单? 仓库库存爆满,但缺的产品偏偏一直补不上,导致库存积压+缺货断货? 供应商交期不稳定,原材料时多时少,生产计划一改再改,车间每天在救火?如果你的企业也有这些烦恼,那说明你的供应链管…

业务系统基础框架-Winform版-极简登录

极简登录未输入提示登录错误提示

Ollama系列04:进阶篇-搭建私有的知识库和问答系统—cherryStudio版

本文是Ollama系列教程的第4篇,在前面的3篇内容中,我们分享了如何在本地安装ollama、运行deepseek等大模型、以及如何在chatbox和cherryStudio中使用本地ollama中的大模型,我们创建了私有的AI对话框和智能体。 Ollama系列教程目录(持续更新中):轻松3步本地部署deepseek 快…

halcon 入门教程(四) 一维码识别,二维码识别,OCR识别

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18781763有兴趣可以多看其他的halcon教程halcon 学习教程目录OK,本篇讲一些一维码,二维码,OCR识别的相关入门知识,不会讲的太深,因为如果你不是专门做这种设备的公司基本不会深入的去研究分析,但是学会基础…

微服务跨模块调用接口如何传递当前用户信息

我们要在 api模块下 新增一个配置类 FeignInterceptorConfig 该类的作用是 跨模块调用接口时拦截然后给用户信息添加进去 具体实现方式 注意点是需要手动配置一下 通过Spring Boot的自动配置机制,将com.hmall.api.config.FeignInterceptorConfig类注册为自动配置类。具体作用…

听见未来,Audio+AI | GAS 2025完整议程揭晓!

听见未来,Audio+AI 2025中国国际音频产业大会(GAS) 将于 3月26-27日 在上海张江科学会堂盛大举办!大会主题聚焦聚焦“听见未来,Audio+AI”,两场主旨论坛、八场专题论坛。内容覆盖电子产业热点领域及方向,分别包括音频+AI、智能车载 音频、线上智能交互、智能耳机与可穿戴…

C++容器

容器的分类分为顺序容器(sequence) 关联容器(asscoiative) 无序容器(unordered) 顺序容器Array、vector、deque、list 关联容器有(mul)set和(mul)map,set和map的区别在于,set的key就是value,而map的key和value是分开的,set和map内部都是通过红黑树实现 无序容器主要为…

.NET Core奇技淫巧之WinForm使用Python.NET并打包

前言 之前整了一个GZY.EFCoreCompare 的库,可以用做对比实体与数据库结构.感兴趣可以去看看,地址:GZY.EFCoreCompare 但是只能导出execl表格. 后来大佬用Python写了个类,可以将execl表格直接生成SQL语句. 但是需要通过开发工具 或者python环境去运行. 对现场的非技术人员很不友…

MCP Server 开发实战指南(Python版)

原文链接:https://www.ryanzoe.top/ai/mcp-server-%e5%bc%80%e5%8f%91%e6%95%99%e7%a8%8b/ MCP 官方文档https://modelcontextprotocol.io/introduction各个 clients 对 MCP 的支持情况https://modelcontextprotocol.io/clientsMCP Python SDK:MCP Client 和 Server 官方 SDK…