java内存模型(JMM)

2023-05-16

1、并发编程的两大问题:多线程之间如何通信以及多线程之间如何同步

2、线程之间的通信机制包含:共享内存和消息传递

3、保证现成的安全是在承接上次线程写完之后再读

4、(面试点)java线程的通信方式:

①、volatile

读锁,轻锁,修饰变量的。写后读,只保证读一定是正确的,但是不保证写。

应用场景:volatile只读变量是正确的,多线程下的i++,操作是会发生错误的

②等待/通知机制

wait()和notify()机制

③、join()

要想让主线程在线程之后执行,要使用join函数,让之后的线程在该线程之后在执行

④、theadLocal(map集合)

线程之内的才有效,如果A线程放入ThreadLocal变量,那么只有线程A的方法才能访问到ThreadLocal内的变量,而线程B线程无法访问ThreadLocal内的变量

5、伪代码注释@override表示重写

  1. 可以当注释用,方便阅读;
  2. 编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

6、对象.wait()进入等待状态,进入等待前必须先持有锁,让其他的线程进入阻塞态

进入等待的线程不会参与竞争,如果没有被唤醒,是不会参与竞争的。

7、同步队列:竞争锁失败后,线程会进入同步队列,当锁释放时还是会去竞争锁

阻塞队列:就算所有的进程都结束了,但是没有被唤醒,是不会去参与竞争锁的。

8、wait  进入等待状态, 会释放锁

sleep 进入睡眠状态, 不会释放锁

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java内存模型(JMM) 的相关文章

  • ubuntu18.04安装Chrome

    简单5步安装Chrome 1 参考 xff1a https blog csdn net Diana Z article details 89474991 1 下载 sudo wget http www linuxidc com files
  • 2022牛客多校第一场A、C、D、G、I、J

    A Villages Landlines 题意 xff1a 在一条横轴上给定 n n n 个点横坐标 x s x s
  • MATLAB矩阵操作1——删除全0列和nan列

    MATLAB矩阵操作1 删除全0列和nan列 1 对全0列或行的删除2 对全为NAN列的删除3 对存在NAN列的删除 1 对全0列或行的删除 clear a 61 0 0 0 NaN 0 NaN NaN NaN 0 0 0 5 0 0 Na
  • Spring框架的知识点

    spring框架是 一个开源的容器性质的轻量级框架 主要有三大特点 xff1a 容器 IOC 控制反转 AOP 面向切面编程 DI 依赖注入 spring框架有哪些优点 xff08 三大优点 xff09 xff08 1 xff09 容器 x
  • 6.存储系统与辅存(cache的映射方式的各种问题解析)

    存储系统体系结构 6 1 存储系统6 2 程序访问的局部性原理6 3 主存地址到cache地址的映射6 4 cache的映像方式全相联映像方式直接映像方式组相联映像方式 6 1 存储系统 衡量存储器有三个指标 xff1a 容量 速度 价格
  • 127.0.0.1是什么地址

    背景情况 xff1a 将maven项目用eclipse中的tomcat启动 xff0c 登录web网页 xff0c 使用的IP为127 0 0 1 xff0c 思考为何用的这个网址 环境配置 xff1a eclipse2020 06 xff
  • SpringMVC工作流程(超级详细版)

    目录 一 xff1a springMVC常用基本组件 二 xff1a SpringMVC执行的流程 一 xff1a springMVC常用基本组件 1 DispatcherServlet 是SpringMVC框架了里面的前端控制器 作用 x
  • ViewModel的基本用法

    本来想弄个游戏开始的倒计时 xff0c 结果用普通方法没弄出来 xff0c 后来发现需要用LifeCirle可以对页面进行实时更新 于是找了相关教材 package com example myapplication import andr
  • 【新手教程】如何在Win11上制作一个模仿MacOS的桌面?

    起因是早上蹲坑的时候偶然间在小红书上刷到一篇文章 xff0c 看了下效果图感觉还不错 xff0c 所以按照文章作者的流程来了一遍 过程中也遇到了一些小问题 xff0c 正好放假了有空就写一篇文章记录一下 先放一下效果 xff1a 1 创建下
  • Android 音频开发——Hal服务版本(五)

    nbsp nbsp nbsp nbsp nbsp nbsp nbsp 上一篇内容到 BroadcastRadioService 调用 openTuner 开启广播时调用不通的 Hal 服务 这一篇来看一下 两个服务的代码 nbsp Broa
  • 问题解决:nginx执行命令后临时目录权限为nobody

    1 问题 执行了nginx t xff0c nginx s reload xff0c 重启了nginx xff0c 发现部分POST接口请求出现了500错误 xff0c 然后 xff0c 查看Nginx错误日志 xff0c 类似如下 xff
  • 【C语言】解决n!和求1!+2!+3!+......+n!问题;求前n项和c语言

    文章解决问题 xff1a 本文章使用C语言解决 n 求一个数的阶乘 xff1b 求 1 xff01 43 2 xff01 43 3 xff01 43 4 xff01 43 n 本篇文章使用 xff23 语言实现解决方案 xff0c 分别运用
  • 最近邻插值法(nearest_neighbor)

    1 原理与应用 最近邻插值法nearest neighbor是最简单的灰度值插值 也称作零阶插值 xff0c 就是令变换后像素的灰度值等于距它最近的输入像素的灰度值 最近邻插值法可应用于图像的缩放 xff0c 因为简单的变换与计算 xff0
  • pytroch、tensorflow对比学习—专栏介绍

    pytorch tensorflow Comparative study 前言 人工智能 机器学习 深度学习已经成为当下最热门的前端科技之一 这三者其实是子 子集的关系 随着技术发展和应用的深入 xff0c 深度学习越来越重要 xff0c
  • 用python将摄氏温度转为华氏温度

  • 用Python画菱形

  • python函数的定义与使用

    求最大值 xff0c 最小值 xff0c 平均数 xff0c 其他还在突破 判断BMI值
  • 用python求最大公约数

    在此列举了三种方法 xff0c 用简单的代码实现 辗转相除法 辗转相减法 枚举法 一定要注意空格
  • python序列常用函数

    x in ls 如果x是ls的元素 xff0c 则返回Ture xff0c 否则返回False x not ls 如果x 不是ls的元素 xff0c 则返回Ture xff0c 否则返回False ls 43 lt 连接序列ls和lt 43
  • python中可变序列常用函数

    ls i 61 x 原位修改 修改ls中指定下标索引对应元素的值为x ls i j 61 lt 用可迭代序列lt中的元素替换ls中 i j 1 范围内的元素 lt中的元素可以多余也可以少于ls中要被替换的元素个数 xff0c 此时原列表的长

随机推荐

  • Android Handler使用详解

    handler是android给我们提供用来更新UI的一套机制 xff0c 也是一套消息处理的机制 xff0c 我们可以发送消息 xff0c 也可以通过它处理消息 它最根本的目的就是解决多线程并发问题 xff0c 假设如果在一个Activi
  • 【shell】用shell脚本判断解析域名返回值是否为200

    bin bash for domain name in 96 cat mnt siteList txt 96 do result num 61 96 curl I s m 10 domain name grep HTTP awk 39 pr
  • Ubuntu实现ssh远程登陆

    目录 1 输入netstat查看是否有ssh的22号端口开放 2 输入 sudo apt get install openssh server 进行ssh服务的安装 3 安装完成后输入 service sshd start 启动ssh服务
  • 运用C++查找素数

    查找素数是在学习C C 43 43 中基本的问题 xff0c 主要是考察对循环的应用 xff0c 逻辑上并不是很难 对于常规的素数查找法 xff0c 解题步骤通常是 xff1a xff08 以查找100以内的素数为例 xff09 1 从2开
  • ARM------->第七天,ADC模块、Qt串口控制助手

    1 ADC 模拟量转换为数字量 模拟量 xff1a 连续的 比如 xff0c 温度 电压 电阻 高度 湿度 数字量 xff1a 离散的 在前几天的代码基础下 xff0c 添加adc c文件 adc h文件 xff0c 修改makefile工
  • 学习夹子入门第一篇《了解pancakeswap 路由》

    内部功能 function sortTokens address tokenA address tokenB internal pure returns address token0 address token1 对令牌地址进行排序 fun
  • Linux开启Docker远程访问并设置安全访问(证书密钥),附一份小白一键设置脚本哦!

    前言 喜欢折腾慢慢看 xff0c 不喜欢折腾直接跳到小简下文的一键脚本那里 xff0c 两分钟搞好 我的博客 xff1a https blog ideaopen cn 我的公众号 xff1a 小简聊开发 开启远程访问 编辑docker se
  • IntelliJ IDEA切换Git远程分支 提交代码 拉取最新代码

    前言 xff1a 众所周知Git用命令提交代码比较繁琐 xff0c 而且还得记住命令 xff0c 那如何让我们更加方便的提交代码呢 以及获取最新内容拉到本地 还有更换你要提交到的分支呢 下面废话不多说 目录 IDEA里切换Git分支 IDE
  • 离散数学在计算机相关领域的应用

    离散数学在数据库中的应用 数据库技术被广泛应用于社会各个领域 xff0c 关系数据库已经成为数据库的主流 xff0c 离散数学中的笛卡儿积是一个纯数学理论 xff0c 是研究关系数据库的一种重要方法 xff0c 显示出不可替代的作用 不仅为
  • 【深入浅出Spring6】第一期——入门

    一 Spring 引言 x1f314 1 准备工作 xff08 1 xff09 创建一个空项目 Spring6 xff0c 为其配置JDK和Maven xff08 2 xff09 创建一个字模块 spring6 001 revelation
  • Spring框架简单介绍

    1 Spring框架的概述 xff1a Spring是一个开源代码的设计层面框架 xff0c 解决的是业务逻辑和其他各层次的松耦合问题 xff0c 主要的思想是面向接口编程 Spring的核心是控制权反转 xff08 IOC xff09 和
  • Android中的页面跳转详解

    Android页面跳转方式 xff1a 1 通过class跳转 Intent intent 61 new Intent 当前Activity xff0c 目标Activity intent setClass MainActivity thi
  • 基数排序的代码

    基数排序就是在桶排序的基础上进行的 xff0c 先比较每个元素的个位 xff0c 在比较十位 一次往上 一共设置0 9 10个桶 xff0c 将符合位数的元素放到相应桶中 xff0c 然后每次比较完一位后 xff0c 在将整个数组重新复制给
  • SpringMVC的响应,SpringMVC上传文件

    数据处理和跳转 xff1a 在前面的博客中 xff0c 我们介绍到SpringMVC的架构是通过前端控制器dispatchservlet将前端传递的请求发送到处理器映射器 xff0c 处理器映射器再将请求返回前端控制器 xff0c 然后让由
  • 多线程并发笔记整理

    1 线程本质就是栈结构 2 进程从规模上要大于线程 xff0c 进程是包含线程的 xff0c 主方法就是主线程 3 线程在创立以后 xff0c 各自之间的执行是互不干扰的 4 创建线程之后 xff0c 如果没有start xff0c 线程是
  • 如何实现多线程减少上下文切换

    多线程处理 xff0c 虽然减少了CPU的浪费 xff0c 但是 xff0c 线程间的切换会导致开销增大 xff0c 如何减少线程的切换 1 无锁并发编程 xff1a 多线程竞争锁时 xff0c 会引起上下文切换 xff0c 所以多线程处理
  • 产生死锁和避免死锁

    如何造成死锁 xff1a 在下面的代码中 xff0c 线程t1对A进行加锁 xff0c 线程t2对B进行加锁 xff0c 但是t1想要B xff0c t2想要A xff0c 这样就会导致 xff0c 两个线程都在等待对方释放锁 xff0c
  • 多线程并发编程中的锁

    1 volatile xff0c 修饰的a在1线程执行完后 xff0c 写回内存刷新了 xff0c 此时缓存行中的线程2所用的a就被标记为无效了 xff0c 要再次从内存读取 xff0c 线程1刷新以后的a 但是他只能保证当前查看的时候是正
  • 消息队列解耦合

    队列 xff1a 传统的串行化服务的缺点是 1 耦合性太强 xff0c xff08 如果发生网络波荡 xff0c 就会导致都失败 xff09 2系统吞吐量不大 xff0c 耗时多 传统的串行化服务的优点是 xff1a 系统结构简单 xff0
  • java内存模型(JMM)

    1 并发编程的两大问题 xff1a 多线程之间如何通信 以及多线程之间如何同步 2 线程之间的通信机制包含 xff1a 共享内存和消息传递 3 保证现成的安全是在承接上次线程写完之后再读 4 xff08 面试点 xff09 java线程的通