您现在的位置是:首页
>
Java多线程程序设计二十三个要点[2]
Java多线程程序设计二十三个要点[2] 线程堵塞Blocked有几个原因造成 ( )线程在等候一些IO操作 ( )线程试图调用另外一个对象的 同步 方法 但那个对象处于锁定状态 暂时无法使用 原子型
Java多线程程序设计二十三个要点[2]
线程堵塞Blocked有几个原因造成
( )线程在等候一些IO操作
( )线程试图调用另外一个对象的 同步 方法 但那个对象处于锁定状态 暂时无法使用
原子型操作(atomic) 对原始型变量(primitive)的操作是原子型的atomic 意味着这些操作是线程安全的 但是大部分情况下 我们并不能正确使用 来看看 i = i + i是int型 属于原始型变量
( )从主内存中读取i值到本地内存
( )将值从本地内存装载到线程工作拷贝中
( )装载变量
( )将i 加
![Java多线程程序设计二十三个要点[2]](http://img.zhputi.com/uploads/42de/42de371524449c0789d35a7e49f7d5e514181.jpg)
( )将结果给变量i
( )将i保存到线程本地工作拷贝中
( )写回主内存
注意原子型操作只限于第 步到第 步的读取以及第 到第 步的写 i的值还是可能被同时执行i=i+ 的多线程中断打扰(在第 步)
double 和long 变量是非原子型的(non atomic) 数组是object 非原子型
由于 条的原因 我们解决办法是
class xxx extends Thread{ //i会被经常修改 private int i; public synchronized int read(){ return i;} public synchronized void update(){ i = i + ;} }
lishixinzhi/Article/program/Java/gj/201311/27707 很赞哦! (1047)