没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
34页
Java内存模型,即:JMM。当程序执⾏并⾏操作时,如果对数据的访问和操作不加以控制,那么必 然会对程序的正确性造成破坏。因此,我们需要在深⼊了解并⾏机制的前提下,再定义⼀种规则, 来保证多个线程间可以有效地、正确地协同⼯作。⽽JMM就是为此⽽⽣的。 ● JMM的关键技术点都是围绕着多线程的原⼦性、可⻅性和有序性来创建的。所以,下⾯我们来⼀⼀ 介绍这三种特性。原子性、可见性、有序性。 正常情况下,如果我们不使⽤volatile,那么每条线程都会有⾃⼰的缓存,当全局变量被修改时,其 17 他线程可能并不会被通知到。 ● volatile并不能真正的保证线程安全。它只能确保⼀个线程修改了数据后,其他线程能够看到这个改 动 当我们使⽤volatile去申明变量时,就等于告诉了虚拟机,这个变量极有可能会被某些程序或者线程 修改。为了确保这个变量被修改后,应⽤程序范围内的所有线程都能够“看到”这个改动,虚拟机就 必须采⽤⼀些特殊的⼿段,保证这个变量的可⻅性等特点。 在⼀个系统中,如果线程数量很多,⽽且功能分配⽐较明确,就可以将相同功能的线程放置在⼀个 线程组⾥。守护线程是⼀种特殊的线程,它会在后
资源推荐
资源详情
资源评论
1
【
讲
义
】
第
讲
:
并
发
编
程
基
础知
识
⼀
、
J
a
v
a
内
存
模
型
.>
原
⼦
性
(
A
tom
ici
ty
)
.>
可
⻅
性
(
V
i
s
ibili
ty
)
.>
有
序性
(
O
r
de
r
i
n
g
)
..>
指
令
重
排
..>
H
a
pp
e
n
-
B
ef
or
e
规
则
⼆
、
多
线
程
基
本
操
作
.>
线
程
状
态
.>
stop
(
被
废弃
)
.>
i
nt
e
rrupt
&
i
s
I
nt
e
rrupt
&
i
nt
e
rrupt
ed
.>
w
ai
t
&
not
if
y
.>
susp
e
n
d
&
r
e
sum
e
(
被
废弃
)
.>
j
o
i
n
&
y
ield
三
、
vo
la
t
ile
四
、
T
h
r
ead
G
roup
五
、
D
ae
mon
六
、
syn
ch
ron
i
z
ed
七
、
锁
的
优
化
策
略
⼋
、
⽆
锁
.>
CA
S
.>
A
tom
ic
I
nt
ege
r
.>
U
ns
afe
.>
A
tom
ic
R
efe
r
e
n
ce
.>
A
tom
ic
S
t
a
mp
ed
R
efe
r
e
n
ce
.>
A
tom
ic
I
nt
ege
r
A
rr
a
y
.>
A
tom
ic
I
nt
ege
r
F
ield
U
p
da
t
e
r
九
、
T
h
r
ead
L
o
cal
2
Java
内
存
模
型
,
即
:
JMM
。
当
程
序
执
⾏
并
⾏
操
作
时
,
如
果
对
数据
的
访
问
和
操
作
不
加
以
控
制
,
那
么
必
然
会
对
程
序
的
正
确
性
造
成
破
坏
。
因
此
,
我
们
需
要
在
深
⼊
了
解
并
⾏
机
制
的
前
提
下,
再
定
义
⼀
种
规
则
,
来
保
证
多
个
线
程
间
可
以
有
效
地
、
正
确
地
协同
⼯
作
。
⽽
JMM
就
是
为
此
⽽
⽣
的
。
JMM
的
关
键
技
术
点
都
是
围
绕
着
多
线
程
的
原
⼦
性
、
可
⻅
性
和
有
序性
来
创
建
的
。
所
以
,下
⾯
我
们
来
⼀⼀
介
绍
这
三
种
特
性
。
原
⼦
性
⽐
如
⼀个
int
a
,
线
程
A
对
其
赋
值
1
,
线
程
B
对
其
赋
值
2
,
⽆
论
什么
情
况
,
a
的
值
要
么
是
1
,
要
么
是
2
;不
会
被
线
程
A
或
线
程
B
⼲
扰
。
但
是
,
如
果是
在
32
位
操
作
系统
中
,
操
作
64
位
的
long
类
型
数据
的
时
候
,
就
⽆
法
保
证
原
⼦
性
了
。
因
为
赋
值
操
作
需
要
执
⾏
2
次
32
位
的
操
作
,
⽽
在
多
线
程
的
情
况
下,
可
能
会
出
现
“
意想
不
到
”
的
最
终结
果
。
如
下
所
示
:
⼀
、
Java
内
存
模
型
●
●
1
.
1
>
原
⼦
性
(
Atomicity
)
●
是
指
⼀个
操
作
是
不
可
中
断
的
。
即
使
是
在
多
个
线
程
⼀
起
执
⾏
的
时
候
,⼀个
操
作
⼀
旦
开
始
,
就
不
会
被
其
他
线
程
所
⼲
扰
。
●
3
【
解
释
】
可
⻅
性
由
于
在
32
位
操
作
系统
中
,
对
long
赋
值
是
要
执
⾏
两
步
的
,
所
以
,
在
并
发
赋
值
时
,
就
有
可
能
最
终
long
的
赋
值
结
果
“
让
⼈
很
意
外
”
,
即
:不
是
111
L
、
-
999
L
、
333
L
和
-
444
L
中
的
任
意
⼀个
。
(
例
如
:
long
的
⾼
32
位
由
线
程
A
赋
值
了
,
低
32
位
由
线
程
B
赋
值
了
)
1
.
2
>
可
⻅
性
(
Visibility
)
●
4
如
果
在
CPU_A
和
CPU_B
上
各
运
⾏
了
⼀个
线
程
,
它
们
共
享
变
量
t
,
由
于
编
译
器
优
化
或
者
硬
件优
化
的
缘
故
,
在
CPU_A
上
的
线
程
将
变
量
t
进
⾏
了优
化
,
将
其
缓
存
在
cache
中
或
者
寄存
器
⾥
。
这
种
情
况
下,
如
果
在
CPU_B
上
的
某
个
线
程
修
改
了
变
量
t
的
实
际
值
,
那
么
CPU_A
上
的
线
程
可
能
并
⽆
法
意
识
到
这
个
改
动
,
依
然
会
读
取
cache
中
或
者
寄存
器
⾥
的
数据
。
可
⻅
性
问题
是
⼀个
综
合
性
问题
。
除
了
上
述
提
到
的
缓
存
优
化
或
者
硬
件优
化
(
有
些
内
存
读
写
可
能
不
会
⽴
即
触
发
,
⽽
会
先
进
⼊
⼀个
硬
件
队
列
等
待
)
会
导
致
可
⻅
性
问题
外
,
指
令
重
排
以
及
编
译
器
的
优
化
,
都
有
可
能
导
致
⼀个
线
程
的
修
改
不
会
⽴
即
被
其
他
线
程
察
觉
。
因
为
指
令
流
⽔
线
的
存
在
,
CPU
才
能
真
正
⾼
效
的
执
⾏
。
但
是
,
流
⽔
线
总
是
害
怕
被
中
断
的
。
流
⽔
线
满
载
时
,
性
能
确
实
相
当
不
错
,
但
是
⼀
旦
中
断
,
所
有
的硬
件
设
备
都
会
进
⼊
⼀个
停
顿
期
,
再
次
满
载
⼜
需
要
⼏
个
周
期
,
因
此
,
性
能
损
失
会
⽐
较
⼤
。
所
以
,
我
们
必
须
要
想
办
法
尽
量
不
让
流
⽔
线
中
断
。
A=B+C
的
执
⾏
过
程
重
排
前
指
令
执
⾏
过
程
(
红
叉
表
示
停
顿
)
是
指
当
⼀个
线
程
修
改
了
某
⼀个
共
享
变
量
的
值
,
其
他
线
程
是
否
能
够
⽴
即
知
道这
个
修
改
。
●
●
1
.
3
>
有
序性
(
Ordering
)
●
1
.
3
.
1
>
指
令
重
排
●
●
5
重
排
后
的
指
令
(
已
经
没
有
停
顿
了
)
程
序
顺
序
原
则
:⼀个
线
程
内
保
证语
义
的
串
⾏
性
。
volatile
规
则
:
volatile
变
量
的
写
,
先
发
⽣
于
读
,
这
保
证
了
volatile
变
量
的
可
⻅
性
。
锁
规
则
:
解
锁
(
unlock
)
必
然
发
⽣
在
随
后
的
加
锁
(
lock
)
前
。
传
递
性
:
A
先
于
B
,
B
先
于
C
,
那
么
A
必
然
先
于
C
。
线
程
的
start()
⽅
法
先
于
它
的
每
⼀个
动
作
。
线
程
的
所
有
操
作
先
于
线
程
的
终结
Thread.join()
。
线
程
的
中
断
interrupt()
先
于
被
中
断
线
程
的
代
码
。
对
象
的
构
造
函
数
执
、
结
束
先
于
finalize()
⽅
法
。
线
程
状
态
图
●
1
.
3
.
2
>
Happen-Before
规
则
●
●
●
●
●
●
●
●
⼆
、
多
线
程
基
本
操
作
2
.
1
>
线
程
状
态
●
剩余33页未读,继续阅读
资源评论
warriorup
- 粉丝: 124
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- opensceneGraph-0.9.6.2
- Matlab-基于Matlab实现可训练时间规整TTW算法-Trainable-Time-Warping-附项目源码-优质项目
- grace数据处理-去相关滤波方法Matlab程序
- 四款ASP毕业涉及电子商务教师教学商业客户新闻发布
- springboot(美食分享管理系统)
- 设计模式python-design-patterns.zip
- 永恒之塔端游-游戏网盘链接提取码下载.txt
- 设计模式python-patterns.zip
- 量子卷积-基于Pytorch实现的量子经典混合算法的可训练卷积实现-附项目源码-优质项目分享.zip
- 基于python+卷积神经网络实现的任意果蔬识别系统+PyQt5的UI可视化+源码+文档(毕业设计&课程设计&项目开发)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功