您现在的位置是:首页 >

Java多线程程序设计二十三个要点[2]

火烧 2021-06-13 07:56:26 1047
Java多线程程序设计二十三个要点[2] 线程堵塞Blocked有几个原因造成 ( )线程在等候一些IO操作 ( )线程试图调用另外一个对象的 同步 方法 但那个对象处于锁定状态 暂时无法使用 原子型

Java多线程程序设计二十三个要点[2]  

    线程堵塞Blocked有几个原因造成

    ( )线程在等候一些IO操作

    ( )线程试图调用另外一个对象的 同步 方法 但那个对象处于锁定状态 暂时无法使用

    原子型操作(atomic) 对原始型变量(primitive)的操作是原子型的atomic 意味着这些操作是线程安全的 但是大部分情况下 我们并不能正确使用 来看看 i = i + i是int型 属于原始型变量

    ( )从主内存中读取i值到本地内存

    ( )将值从本地内存装载到线程工作拷贝中

    ( )装载变量

    ( )将i 加

Java多线程程序设计二十三个要点[2]

    ( )将结果给变量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  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码