摘要: 重用可以节省我们进行开发和测试(测试比我们自己测严谨地多)的时间和其他各种成本。 但是,对一个线程安全类进行扩展的时候就需要思考一些问题。 比如我们熟知的线程安全类Vector,该类中对所有的公有方法提供了synchronized修饰以保证访问互斥与可见性。 但Vector毕竟是一个公有的结构,他对 阅读全文
posted @ 2014-10-21 19:52 Jinkora 阅读(501) 评论(0) 推荐(0)
摘要: 首先让我简单解释一下所谓"发布"。 发布(publish),使对象可以在当前作用域之外的代码中可见,如果该对象被发布,则该对象的非私有域中引用的所有实例同样也会被发布。 不仅仅是作为一个field,当一个对象作为一个方法的参数或者在公有方法中作为返回引用,这都属于发布。 而相对地,对于错误的发布,我 阅读全文
posted @ 2014-10-21 19:51 Jinkora 阅读(810) 评论(0) 推荐(0)
摘要: 这篇记录一下保证并发安全性的策略之——不变性。 (注意:是Immutable,不是Invariant!) 将一连串行为组织为一个原子操作以保证不变性条件,或者使用同步机制保证可见性,以防止读到失效数据或者对象变为不一致状态,这些问题都是因为共享了可变的数据。 如果我们能保证数据不可变,则这些复杂的问 阅读全文
posted @ 2014-10-21 19:49 Jinkora 阅读(2880) 评论(0) 推荐(4)
摘要: 保证并发安全性的方式有三: 不共享、不可变、同步 前两种方式相对第三种要简单一些。 这一篇不说语言特性和API提供的相关同步机制,主要记录一下关于共享的一些思考。 共享(shared),可以简单地认为多个线程可以同时访问某个对象。 如果仅仅在单线程内进行访问则不存在同步的问题。 保证数据的单线程访问 阅读全文
posted @ 2014-10-21 19:45 Jinkora 阅读(675) 评论(0) 推荐(0)
visit:click tracking