摘要: JDK5.0以后提供了多种并发类容器来替代同步类容器从而改善性能。同步类容器的状态都是串行化的。他们虽然实现了线程安全,但严重降低了并发性,在多线程环境时,严重降低了应用程序的吞吐量。并发类容器是专门针对并发设计的,使用ConcurrentHashMap来代替给予散列的传统的hashTable,而在 阅读全文
posted @ 2017-04-18 21:16 優syousetu 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 同步类容器都是线程安全的,但在某些场景下需要加锁来保护复合操作。复合类操作如:迭代(反复访问元素,遍历完容器中所有的元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这些复合操作在多线程并发的修改容器时,可能会表现出意外的行为,最经典的便是ConcurrentModificati 阅读全文
posted @ 2017-04-18 19:55 優syousetu 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 单例模式,最常见的就是饥饿模式和懒汉模式,饥饿模式直接实例化对象,懒汉模式在调用方法时进行实例化对象(如果有了就不创建了)。在多线程模式中,考虑到性能和线程安全问题,我们一般选择下面两种比较经典的单例模式,在性能提高的同时,又保证了线程安全。 dubble check instance 两层的if, 阅读全文
posted @ 2017-04-18 18:36 優syousetu 阅读(131) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal概念:线程局部变量,是一种多线程并发访问变量的解决方案。与其synchronized等加锁方式不同,ThreadLocal完全不提供锁,而是用以空间换时间的手段,为每个线程提供变量独立的副本,以保证线程安全。从性能上来说,ThreadLocal不具有绝对优势,在并发不是很高的时 阅读全文
posted @ 2017-04-18 18:12 優syousetu 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 使用wait/notify模拟queue BlockingQueue:顾名思义,首先它是一个队列,并且支持阻塞的机制,阻塞的放入和得到数据。我们要实现LinkedBlockingQueue,下面两个简单的方法put和take。 put(anObject):把anObject加到BlockingQue 阅读全文
posted @ 2017-04-18 17:50 優syousetu 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 线程通信的概念: 线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一。当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同时还会使开发人员对线程任务在处理的过程中进行有效的把控与监督。 使用wait/notify方法实现线 阅读全文
posted @ 2017-04-18 11:44 優syousetu 阅读(157) 评论(0) 推荐(0) 编辑