JUC并发编程第一篇,复习线程基础知识

news2024/11/19 11:20:50

JUC并发编程第一篇,复习线程基础知识

    • 一、为什么多线程极其重要?
    • 二、从start一个线程开始认识多线程
    • 三、进程、线程和管程
    • 四、用户线程和守护线程

一、为什么多线程极其重要?

  • 硬件方面:摩尔定律失效

摩尔定律
价格不变时,集成电路上可容纳的元器件的数目约每隔18-24个月便会增加一倍,性能也将提升一倍。

摩尔定律失效
从2003年开始CPU主频已经不再翻倍,而是采用多核而不是更快的主频。
在主频不再提高且核数在不断增加的情况下,要想让程序更快就要用到并行或并发编程。

  • 软件方面:

高并发系统,异步+回调等生产需求

二、从start一个线程开始认识多线程

对于线程的使用,大家再熟悉不过了,最简单的就是new一个线程,调用它的 start() 方法,这个线程就启动了。但是它到底是怎么做到的呢?可以点进去源码看一下:

  • 当我们 start() 一个线程的时候,其实是调用了 Thread.java 类里边的 private native void start0();
    在这里插入图片描述
  • 但是到这就结束了吗?其实并没有,Java语言底层是C++语言写的,所以想要继续往下看,可以到官网下载 OpenJDK源码(http://openjdk.java.net/)
  • Openjdk的写JNI一般是一一对应的,Thread.java对应的就是Thread.c
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 最后可以看到,操作线程其实是对操作系统的调用。

三、进程、线程和管程

进程:是操作系统资源分配的最小单元,是操作系统对一个正在运行的程序的一种抽象,每⼀个进程都有它⾃⼰的内存空间和系统资源

线程:是操作系统能够进行运算调度的最小单元,⼀个进程会有1个或多个线程。

管程:Monitor(监视器),就是我们平时所说的锁。Monitor其实是一种同步机制,他的义务是保证(同一时间)只有一个线程可以访问被保护的数据和代码。

四、用户线程和守护线程

线程的daemon属性为true表示是守护线程,false表示是用户线程

守护线程:是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程
用户线程:是系统的工作线程

注意:当程序中所有用户线程执行完毕之后,不管守护线程是否结束,系统都会自动退出
设置守护线程,需要在start()方法之前进行


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

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

相关文章

Java毕业设计基于springboot 美妆化妆品销售购物网站多商家 前后端分离node

美妆化妆品是当前很多女性的必备用品,所以为了能够让更多的女士用上物美价廉的化妆品我们开发了本系统。基于springboot 美妆化妆品销售购物网站本系统以java为核心开发技术,结合springboot VUE框架实现了一个美妆化妆品销售管理系统。美妆化妆品销售管理…

InheritableThreadLocal

补充:关于ThreadLocal,请看这篇文章关于ThreadLocal内存泄漏的问题_小星向上的博客-CSDN博客 引言:最近在查看shiro登录成功后,获取当前登录人的信息时发现了里面使用了InheritableThreadLocal,,但是我好奇,如果我在里面新建了一个线程,那怎么获取登录人的信息呢,结果发现shir…

(经典dp) 骨牌问题 2*n 3*n n*m

文章目录前言题目2*n3*nn*mn < 5 && m < 1e9n*m < 100END前言 用1*2的骨牌铺满一个平面&#xff0c;是非常经典的一系列dp题目 (各大平台几乎都有这类题) 并且随着平面的要求不同&#xff0c;难度也是层层递增 对于n*m若数据量不同&#xff0c;则对应处理的…

2022IDEA的下载、安装、配置与使用

文章目录1.IntelliJ IDEA 介绍1.2 JetBrains 公司介绍1.2 IntelliJ IDEA 介绍1.3 IDEA 的主要功能介绍1.3.1 语言支持上1.3.2 其他支持1.4 IDEA 的主要优势&#xff1a;(相较于 Eclipse 而言)1.5 IDEA 的下载地址1.6 官网提供的详细使用文档2.windows 下安装过程2.1 安装前的准…

CANdelaStudio中的状态跳转图无法查看

诊断协议那些事儿 诊断协议那些事儿专栏系列文章&#xff0c;本文将介绍如何解决CANdelaStudio中的状态跳转图无法查看的问题。 参考文章&#xff1a; CDD文件——CANdelaStudio 10服务-DiagnosticSessionControl States To display a graphical representation of the stat…

安装kafka和相关配置解析

1选择操作系统 kafka是一个java应用程序&#xff0c;可以运行在很多系统上Windows, MacOS, Linux, 等 一般都是Linux 2安装java环境 3安装zk zk存储的是metadata 架构图如下 Kafka已经用稳定的zk的3.4.6版本进行了广泛的测试&#xff0c;它可以从apache.org的http://bit.ly/2sD…

摩尔斯电码笔记

文章目录1. 前言2. 什么是摩尔斯电码&#xff1f;3. 摩尔斯电码是如何发明的&#xff1f;4. 摩尔斯电码还在使用吗&#xff1f;5. 如何快速记住6. 体验7. 形式表达8. 相关电影1. 前言 最近突然想起之前学习过的莫斯密码已经忘记了&#xff0c;发现如果不实践的话&#xff0c;就…

OOM和JVM最详细介绍

什么是OOM&#xff1f; OOM&#xff0c;全称“Out Of Memory”&#xff0c;翻译成中文就是“内存用完了”&#xff0c;来源于java.lang.OutOfMemoryError。看下关于的官方说明&#xff1a; Thrown when the Java Virtual Machine cannot allocate an object because it is out…

windows服务器证书算法升级

由于前段时间&#xff0c;服务器检查出证书算法较弱&#xff0c;服务器算法采用的SHA1&#xff0c;这个算法在当前已经较落后了。 第一步在命令端输入certsrv.msc&#xff08;如果打不开&#xff0c;请看我的另一篇文章&#xff0c;先安装服务器证书&#xff09; 第二步打开证…

[LeetCode周赛复盘] 第 91 场双周赛补20221015

[LeetCode周赛复盘] 第 91 场双周赛补20221015 一、本周周赛总结二、 [Easy] 2465. 不同的平均值数目1. 题目描述2. 思路分析3. 代码实现三、[Medium] 2466. 统计构造好字符串的方案数1. 题目描述2. 思路分析3. 代码实现四、[Medium] 2467. 树上最大得分和路径1. 题目描述2. 思…

2.2、物理层下面的传输媒体

2.2、物理层下面的传输媒体 注意&#xff1a; 传输媒体不属于网络体系结构的任何一层。若非要将它添加到体系结构中&#xff0c;那只能放在物理层之下 传输媒体大致分为 2 类 2.2.1、导引型传输媒体 导引型传输媒体 电磁波被导引沿着固体媒体传播常见的导引型传输媒体有同…

电子元器件解析01——电阻

摘要电阻是最基本的电子元器件之一&#xff0c;了解电阻的各方面特性对正确选用合适的电阻很有帮助。本文总结了关于电阻的各个性能参数&#xff0c;包括电阻的标称值、精度、温度系数、耐压、封装与功率&#xff1b;总结了电阻的分类&#xff0c;有多种分类依据&#xff0c;包…

基于jsp+mysql+ssm的校园OTO超市系统-计算机毕业设计

项目介绍 本网站主要是针对高校学生以超市购物为重点开发的网站。系统从用户上分为三种&#xff1a;卖家、买家和游客。系统从模块分为买家模块和卖家模块&#xff0c;买家模块包括用户注册登录、商品浏览、商品详情、商品加入购物车、购物车中商品删除、购物车商品数量变更、…

腾讯代码安全指南开源,涉及 C/C++、Go 等六门编程语言

腾讯代码安全指南旨在梳理 API 层面的风险点并提供详实可操作的编码指引&#xff0c;是我们开展 DevSecOps 安全左移实践探索过程中&#xff0c;梳理沉淀面向开发人员的代码安全参考材料。 本次开源涉及 C/C、JavaScript、Node、Go、Java、Python 六门编程语言的安全指南。 一…

详解风控模型中的逻辑回归评分卡与模型评估内容

今天我们来输出一篇风控长文&#xff0c;关于大家熟悉关注的逻辑评分卡的开发的内容&#xff0c;文章篇幅较长&#xff0c;大纲目录如下&#xff1a; 建模前准备 1.1特征预处理与转化 1.2特征衍生与提取 1.3特征选择与降维 分箱 2.1分箱概述 2.2分箱方法 Woe计算 3.1 WOE 3.2…

【用户画像】功能实现值写入ClickHouse人群包、预估和更新分群人数,NoSQL数据库介绍

文章目录一 写入ClickHouse人群包1 组合查询Bitmap表SQL代码实现&#xff08;1&#xff09;SQL语句分析&#xff08;2&#xff09;实现思路&#xff08;3&#xff09;实现过程controller层service层Taginfo实现类mapper层2 人群包代码实现&#xff08;1&#xff09;配置文件&am…

一个注解干翻所有Controller

1. 概览 日常开发中&#xff0c;最繁琐的便是编写 Controller。很多公司都制定了规范&#xff1a;Controller 不能存在任何的业务逻辑&#xff0c;主要完成参数解析和结果转换。不过查看项目源码&#xff0c;你会发现 Controller 中存在了大量不该存在的逻辑&#xff0c;对此&…

【MFC】打砖块小游戏(下)(7)

任务点&#xff1a; 1、键盘左右键消息处理&#xff1b; 2、碰撞检测&#xff08;与砖块、挡板、上、左、右&#xff09;&#xff1b; 3、控制转向&#xff1b; 程序shix 解决思路&#xff1a; 1、左右键消息处理&#xff1a; 响应 WM_KEYDOWN 消息&#xff0c;移动挡板…

【Spring】——1、使用@Configuration和@Bean给容器中注册组件

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…

ArrayList详解

ArrayList是什么? ArrayList就是动态数组&#xff0c;是List接口的可调整大小的数组实现&#xff1b;除了实现List接口之外&#xff0c;该类还提供了一些方法来操纵内部使用的存储列表的数组大小。它的主要底层实现是数组Object[] elementData。 为什么要设计ArrayList&…