JAVA并发图解

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

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

标签:JAVA,并发
0
投稿

猜你喜欢

  • java实现分页显示效果

    2021-12-29 20:17:43
  • TableLayout(表格布局)基础知识点详解

    2023-05-30 01:12:42
  • 重写Java中的equals方法介绍

    2023-06-24 00:30:26
  • 用C# 实现鼠标框选效果的实现代码

    2023-04-18 14:08:26
  • C# ManualResetEvent使用方法详解

    2022-05-15 23:57:51
  • Android实现输入法弹出时把布局顶上去和登录按钮顶上去的解决方法

    2022-11-10 15:07:26
  • JAVA JDK8 List分组的实现和用法

    2023-11-26 09:56:11
  • Android Flutter实现仿闲鱼动画效果

    2023-07-15 15:32:47
  • Java去除字符串中空格的方法详解

    2022-10-16 23:42:13
  • Java8中Optional类型和Kotlin中可空类型的使用对比

    2023-07-29 07:49:21
  • 解析Java和Eclipse中加载本地库(.dll文件)的详细说明

    2023-11-11 01:23:31
  • Java 实现并发的几种方式小结

    2022-10-23 02:54:46
  • 深入剖析Java中String类的concat方法

    2023-06-02 07:07:13
  • Java SpringBoot整合shiro-spring-boot-starterqi项目报错解决

    2022-11-07 03:27:02
  • RestTemplate Get请求实现bean参数传递详解

    2022-03-14 22:20:27
  • Java网络编程之TCP通信完整代码示例

    2022-10-18 21:42:57
  • Struts2+uploadify多文件上传实例

    2023-03-19 07:53:35
  • 对Java中JSON解析器的一些见解

    2023-02-05 20:53:15
  • c# base64转字符串实例

    2021-06-25 01:47:54
  • .net从服务器下载文件中文名乱码解决方案

    2022-09-11 15:23:11
  • asp之家 软件编程 m.aspxhome.com