惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

博客园 - 那只狐狸

线程与GC 神奇的Task.WaitALl Redis的淘汰策略 压测工具k6 C#的Lock可以锁什么? SqlServer高性能批量插入 二叉树 二叉搜索树 AVL树 红黑树 关于GC 线上bug线下很难重现时的一次处理 自动化测试和联调的工具---apifox 事务管理思考 sleep、yield、wait的区别 线程异常 线程 JAVA线程中断 jms amqp activemq rabbitmq的区别 servlet不是线程安全的 雪花算法 mysql在海量数据时的处理方案
volatile synchronized在线程安全上的区别
那只狐狸 · 2019-12-15 · via 博客园 - 那只狐狸

一、JAVA内存模型中,线程的工作内存和共享内存的交互协议规定了8种操作,

1.其中的读取和载入这一对、赋值和存储这一对不是原子操作;

2.每一对中只要求顺序执行 不一定连续执行

二、synchronized语义规范在多写多读场景下保证了原子性,因为有锁;语义如下:

1.进入同步块钱,先清空工作内存的共享变量,从主存中重新读取

2.解锁前 必须完成到主内存的同步

三、volatile语义:

使用volatile变量或者修改volatile变量时 必须做两个内存块的一致,且保证每一对操作的连续性,但不保证原子性(因为没有锁)

所以在一写多读的场景下可以保证线程安全、可见性

四、可见性和线程安全(原子性)的区别

可见性:线程间的修改别的线程是否看的见;

线程安全:不仅课件,而且数据一致

五、volatile和synchronized的区别

volatile是开销较低的读写锁,比synchronized的简单