美文网首页
并发编程-3 对象的共享

并发编程-3 对象的共享

作者: 骊骅 | 来源:发表于2017-07-05 11:02 被阅读15次

    同步的作用

    • 1、确保以原子的方式执行操作:防止读取正在被修改的状态变量
    • 2、 内存可见性:确保一个线程修改了对象状态后,其他线程可以看到
      ** 可以通过使用【同步】或是类库中内置的同步来保证对象被安全的发布**

    3.1 可见性

    失效数据

    非原子的64位操作

    加锁与可见性:所有执行读操作或是写操作的线程都必须在同一个锁上同步

    volatile

    发布与逸出

    • 发布(publish)是一个对象可以在当前作用域之外的地方被引用到
    • 逸出(Escape)当某个不该被发布的对象被发布时,称为逸出
    • 发布一个对象时,对象内部非私有域中引用的所有对象都会被发布
    • 当把一个对象传给外部方法时,这个对象已经被发布
    • 发布一个内部类的时候,这个类本身也被发布
    • 不要再构造过程中使得this引用逸出

    线程封闭

    • 线程封闭(Thread Confinement):如果只在单线程内访问数据,就不需要同步
    • 常见的线程封闭对象:1、JDBC 中的connection对象;2、java中的局部变量;3、java中的ThreadLocal变量

    不变性

    • 满足同步需求的另外一个做法是使用不可变对象(Im'mutable Object)
    • 不可变对象一定是线程安全的

    安全发布

    相关文章

      网友评论

          本文标题:并发编程-3 对象的共享

          本文链接:https://www.haomeiwen.com/subject/edwxhxtx.html