JAVA并发图解
更新时间:2021年09月06日 15:04:44 作者:Zephyr丶J
这篇文章主要介绍了JAVA的并发,文中图解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
JAVA并发总览
核心问题
并不是程序的漏洞导致的,而是操作系统底层机制导致的

原子性:

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

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

解决方案
可见性:

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

原子性:
操作系统角度,监视器的名字是管程
解决了原子性问题,可见性和有序性都能解决



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

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

总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
相关文章
一篇文章带你深入了解Java基础(4)
这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2021-08-08
深入理解Java原生的序列化机制
Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。下面小编和大家来一起学习一下吧
2019-06-06
java使用jaxb操作xml示例
JAXB主要用来实现对象和XML之间的序列化和反序列化,关于JAXB的介绍就不多说了,这里主要总结下基本使用方法和一些注意事项
2014-04-04
Java之BigDecimal的坑及解决
这篇文章主要介绍了Java之BigDecimal的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2021-11-11
Spring的事件发布与监听方式案例讲解
今天去官网查看spring boot资料时,在特性中看见了系统的事件及监听章节,所以下面这篇文章主要给大家介绍了关于SpringBoot事件发布和监听的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-03-03
java怎么设置代理ip实现高效网络请求
无论是在爬虫、API调用还是网络测试中,代理IP的使用都变得愈发重要,本文我们主要来介绍一下如何在Java中设置代理IP实现高效网络请求吧
2024-11-11
SpringBoot实现图形验证码生成的方法
验证码可以有效防止其他人对某一个特定的注册用户用特定的程序暴力 破解方式进行不断的登录尝试,断的登录尝试
我们其实很经常看到,登录一些网站其实是需要验证码的,本文给大家介绍了SpringBoot实现图形验证码生成的方法,需要的朋友可以参考下
2025-03-03
java 高并发中volatile的实现原理
这篇文章主要介绍了java 高并发中volatile的实现原理的相关资料,在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”,需要的朋友可以参考下
2017-03-03
用Java实现简单ATM机功能
这篇文章主要为大家详细介绍了用Java实现简单ATM机功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-01-01
最新评论