JAVA并发图解
作者:Zephyr丶J 时间:2023-03-26 03:11:41
JAVA并发总览
核心问题
并不是程序的漏洞导致的,而是操作系统底层机制导致的
原子性:
可见性问题:
改的是缓存,但是缓存对另一个线程不可见
有序性问题:
正常应该先创建对象,再赋值;而编译器对指令执行顺序出于某些原因进行了优化,然后改变了执行顺序,如下:
解决方案
可见性:
有序性:
这个原则在加了volatile和锁的时候自动生效,也就是说解决了可见性和原子性,可见性顺带就解决了
原子性:
操作系统角度,监视器的名字是管程
解决了原子性问题,可见性和有序性都能解决
并发工具
CAS的方式会出现ABA问题,就是说是被修改了两次而又变回了原来的值,但是检查是没有变化的,对于引用对象就会出现问题,引用对象地址没变,但是引用的东西发生了变化
其他方案
ThreadLocal,线程是Key,值是线程的数据,每个线程取东西存东西,都是通过线程key区分,来隔离的
来源: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