软件编程
位置:首页>> 软件编程>> java编程>> JAVA并发图解

JAVA并发图解

作者:Zephyr丶J  发布时间:2023-03-26 03:11:41 

标签:JAVA,并发

JAVA并发总览

核心问题

并不是程序的漏洞导致的,而是操作系统底层机制导致的

JAVA并发图解

原子性:

JAVA并发图解

可见性问题:

改的是缓存,但是缓存对另一个线程不可见

JAVA并发图解

有序性问题:

正常应该先创建对象,再赋值;而编译器对指令执行顺序出于某些原因进行了优化,然后改变了执行顺序,如下:

JAVA并发图解

解决方案

可见性:

JAVA并发图解

有序性:

这个原则在加了volatile和锁的时候自动生效,也就是说解决了可见性和原子性,可见性顺带就解决了

JAVA并发图解

原子性:

操作系统角度,监视器的名字是管程

解决了原子性问题,可见性和有序性都能解决

JAVA并发图解

JAVA并发图解

JAVA并发图解

并发工具

CAS的方式会出现ABA问题,就是说是被修改了两次而又变回了原来的值,但是检查是没有变化的,对于引用对象就会出现问题,引用对象地址没变,但是引用的东西发生了变化

JAVA并发图解

其他方案

ThreadLocal,线程是Key,值是线程的数据,每个线程取东西存东西,都是通过线程key区分,来隔离的

JAVA并发图解

来源:https://blog.csdn.net/windyjcy/article/details/120122777

0
投稿

猜你喜欢

  • 目录之前的处理方式现在的处理方式其他场景处理重复点击间接设置点击富文本列表数据绑定总结项目地址一般手机上的 Android App,主要的交
  • 前面我们讲到了Spring在进行事务逻辑织入的时候,无论是事务开始,提交或者回滚,都会触发相应的事务事件。本文首先会使用实例进行讲解Spri
  • 本文实例汇总了Java各种排序算法。分享给大家供大家参考,具体如下:1. 冒泡排序:public class SortTest { pub
  • 每一个应用都是具备一个功能,那就是版本更新,我记得我之前在面试的时候,面试官让我介绍一下应用版本更新的一些具体操作。我当时因为做过这个功能,
  • 简介最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括:专门针对Java语言的:Kryo,FST等等跨语言的:
  • 通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成:Socket编程:实现PC和Emulato
  • 前言支付宝推出一个沙箱环境,能够很好的模拟支付宝支付,并且还提供了demo,但demo是一个普通web项目,怎么整合到Spring Boot
  • 开发中经常需要将某个文件向另一个应用程序传递,如图片上传到另一个应用程序、文件在不同存储路径之间的复制粘贴等都需要共享文件,可以这样理解接收
  • 概述动态SQL:SQL语句会随着用户输入或外部条件的变化而变化 。例如:我们在做多条件查询的时候,编写SQL语句的查询操作,我们并不知道用户
  • 在Spring4之后,要使用注解开发,必须要保证aop的包导入了使用注解需要导入context约束,增加注解的支持!<?xml ver
  • 一、前言在java中,异常机制是非常有用的构成部分,异常信息对于查找错误来说是必不可少至关重要的信息,因此我们希望在发生错误的时候先看到捕捉
  • 一、先明确几个基本概念1、伪随机数:pseudo-random number generators ,简称为:PRNGs,是计算机利用一定的
  • java类的方法,我特别喜欢《java编程思想》里面的描述,这本书说java类之间的相互通信是通过消息。比如顾客类的对象调用一个eat方法,
  • 目前Android在全世界市场上大约有75%的占有率,国人Android手机的持有比例更甚,甚至达到90%以上。因此搞计算机的一听说手机应用
  •  一、业务需求实现省份与城市的二级联动二、实现效果三、代码实现1. province_city.jsp前端界面实现<%@ p
  • 前言我们在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。session的处理有很多种方法,详情见转载的上篇
  • 前言对于信息的加密方式多种多样,之前为大家介绍了一种自己设计的加密方式,有兴趣的朋友可以欣赏一下,欢迎给予指点。今天为大家介绍一下对称加密方
  • 在构造函数里加上以下代码:this.DoubleBuffered = true;//设置本窗体SetStyle(ControlStyles.
  • 1.1、定义从现有类派生的类被称作子类,也叫派生类,扩展类,或孩子类。现有类被称作超类,也叫基类,或父类。1.2、创建子类public cl
  • 本文实例讲述了C#端口转发用法。分享给大家供大家参考。具体分析如下:这里以链接3389的时候为例例子1:连接a机器的3389端口连不上,因为
手机版 软件编程 asp之家 www.aspxhome.com