美文网首页
并发编程-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 对象的共享

    同步的作用 1、确保以原子的方式执行操作:防止读取正在被修改的状态变量 2、 内存可见性:确保一个线程修改了对象状...

  • Java如何写出高效的并发程序

    在Java语言里,面向对象思想能够让并发编程变得更简单。 可以从风中共享变量,识别共享变量间的约束条件和执行并发访...

  • 2019-05-10

    Java并发编程实践 [TOC] 第3章 共享对象 3.1 可见性 ​ 在一个单线程化的环境里,如果向一个变量...

  • SynChronized

    并发编程对共享资源,临界资源的访问 在并发编程中对临界资源的访问有可能出现并发问题,注意是临界资源,共享资源,普通...

  • 【再读Java并发编程】对象的共享

    并发的两层作用:1 多线程互斥访问;2 内存可见性;示例一:没有并发保护的可见性问题。 *JMM 重排序*在没有同...

  • 《Java 并发编程实战》对象的共享

    目录 1.可见性2.发布与溢出3.线程封闭4.不变性5.安全发布 1.可见性 非原子 64 位操作,JVM 允许将...

  • [Java 并发]并发编程实战笔记-对象的共享

    java 对象的共享 要编写正确的并发程序,关键在于在访问共享可变状态是需要进行正确的管理,下面介绍如何共享和发布...

  • Java并发编程实战 Chapt3 对象的共享

    同步: 原子性 内存可见性 3.1 可见性 重排序(Reordering):在没有同步的情况下,编译器、处理器以及...

  • 对象的共享 Java并发编程实战总结

    要编写正确的并发程序,关键问题在于:在访问共享的可变状态时需要进行正确的管理。第2章介绍了如何通过同步来避免多个线...

  • Java并发编程笔记(二):对象的共享

    一、可见性 先看一个简单的例子:A线程 B线程 上述代码开启有两个线程A,B,open为true的时候表示文件或者...

网友评论

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

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