0
点赞
收藏
分享

微信扫一扫

4.线程安全问题

张宏涛心理 2022-05-01 阅读 50
java-ee

目录

一、线程安全(Thread Safe)

1.线程不安全出现的原因

1.1没有保证原子性

1.2 内存可见性问题(系统角度分析)

1.3代码重排序导致的问题

2.什么时候不需要考虑线程安全问题

3.synchronize关键字


一、线程安全(Thread Safe)

1.线程不安全出现的原因

1.1没有保证原子性

在开发者眼中:多个线程之间操作同一块数据,至少有一个线程在修改该数据

在系统眼中:Java代码中的一条语句肯对应的是多条指令

但是在我们程序员眼中r++是一个原子性的操作(要么执行完成,要么执行失败),但是实际的执行是保证不了原子性的

1.2 内存可见性问题(系统角度分析)

指令的执行速度 >> 内存的读写速度

CPU为了提升数据获取速度,解决读写速度不一样,一般在CPU中设置缓存

JVM规定了JVM内存模型,把一个线程想象成一个CPU

主内存:实际内存的模拟

工作内存:CPU中缓存的模拟

1.3代码重排序导致的问题

 

2.什么时候不需要考虑线程安全问题

3.synchronize关键字

举报

相关推荐

0 条评论