这部分是包含了Java高级玩法的一些专题,对面试者和新入职的Java程序员相信都会有帮助的。...
分类:
编程语言 时间:
2014-10-24 00:22:28
阅读次数:
233
ava 5.0 提供了多种并发容器来改进同步容器的性能。
同步容器是将所有对容器的访问都串行化,以实现他们的线程安全性。代价是严重降低并发行,当多个线程竞争容器的锁时,吞吐量将严重降低。
并发容器是针对多个线程并发访问设计的。 Java 5.0 增加了 ConcurrentHashMap ,用来替代同步且基于散列的 Map ,增加了 CopyOnWriteArrayList ,用于在遍历操作为主要操作的情况下替代同步的 List 。
Java 5.0 还增加了两中心的容器类型...
分类:
编程语言 时间:
2014-10-23 16:27:39
阅读次数:
209
Java 中的同步容器类包括 Vector 和 Hashtable ,二者是早起 JDK 的一部分,此外还包括在 JDK1.2 中添加的一些功能相似的类,这些同步的封装类是由 Collections.synchronizedXxx 等工厂方法创建的的。这些类实现线程安全的方法都是一样的:将他们封装起来,并对每个公有方法都进行同步,使得每次都只有一个线程能访问容器的状态。...
分类:
编程语言 时间:
2014-10-23 00:02:42
阅读次数:
171
在聊聊高并发(五)理解缓存一致性协议以及对并发编程的影响 我们了解了处理器缓存一致性协议的原理,并且提到了它对并发编程的影响,“多个线程对同一个变量一直使用CAS操作,那么会有大量修改操作,从而产生大量的缓存一致性流量,因为每一次CAS操作都会发出广播通知其他处理器,从而影响程序的性能。”
这一篇我们通过两种实现自旋锁的方式来看一下不同的编程方式带来的程序性能的变化。
先理解一...
分类:
其他好文 时间:
2014-10-22 14:45:38
阅读次数:
279
首先让我简单解释一下所谓"发布"。发布(publish),使对象可以在当前作用域之外的代码中可见,如果该对象被发布,则该对象的非私有域中引用的所有实例同样也会被发布。不仅仅是作为一个field,当一个对象作为一个方法的参数或者在公有方法中作为返回引用,这都属于发布。而相对地,对于错误的发布,我们将其...
分类:
编程语言 时间:
2014-10-21 21:23:16
阅读次数:
347
保证并发安全性的方式有三:不共享、不可变、同步前两种方式相对第三种要简单一些。这一篇不说语言特性和API提供的相关同步机制,主要记录一下关于共享的一些思考。共享(shared),可以简单地认为多个线程可以同时访问某个对象。如果仅仅在单线程内进行访问则不存在同步的问题。保证数据的单线程访问称为线程封闭...
分类:
编程语言 时间:
2014-10-21 21:23:10
阅读次数:
278
"重用"大法好,我们早已习惯重用已设计好的类而不是自己造轮子玩。重用可以节省我们进行开发和测试(测试比我们自己测严谨地多)的时间和其他各种成本。但是,对一个线程安全类进行扩展的时候就需要思考一些问题。比如我们熟知的线程安全类Vector,该类中对所有的公有方法提供了synchronized修饰以保证...
分类:
编程语言 时间:
2014-10-21 21:18:02
阅读次数:
296
这篇记录一下保证并发安全性的策略之——不变性。(注意:是Immutable,不是Invariant!)将一连串行为组织为一个原子操作以保证不变性条件,或者使用同步机制保证可见性,以防止读到失效数据或者对象变为不一致状态,这些问题都是因为共享了可变的数据。如果我们能保证数据不可变,则这些复杂的问题就自...
分类:
编程语言 时间:
2014-10-21 21:05:45
阅读次数:
292
Java作为一个跨平台的语言,它的实现要面对不同的底层硬件系统,设计一个中间层模型来屏蔽底层的硬件差异,给上层的开发者一个一致的使用接口。Java内存模型就是这样一个中间层的模型,它为程序员屏蔽了底层的硬件实现细节,支持大部分的主流硬件平台。要理解Java内存模型以及一些处理高并发的技术手段,理解一些基本的硬件知识是必须的。这篇会说一下跟并发编程相关的一些硬件知识。
一个基本的CPU执行...
分类:
其他好文 时间:
2014-10-21 13:53:02
阅读次数:
149
(一)并发编程: ????1、Erlang的进程的特点: ????????????1、创建和销毁进程是非常讯速 ????????????2、在进程间发送消息是非常讯速 ????????????3、进程在所有操作系统...
分类:
其他好文 时间:
2014-10-20 21:29:33
阅读次数:
284