java中为了解决多线程并发带来的线程安全问题,引入了锁机制。 java的加锁机制,可粗略分为两种: 1.内置锁。 什么是内置锁?把一个对象用作实现同步的锁,这样的锁就是内置锁。这是基于互斥的思想来实现的锁,即只有一个线程可以持有某一个锁。 显然这样做可以保证线程安全,但是性能方面不那么友好。比如直 ...
分类:
编程语言 时间:
2017-05-03 13:14:57
阅读次数:
150
为了更好的控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效的进行线程控制。他们都在Java.utilconcurrent包中,是JDK并发包的核心。其中有一个比较重要的类:Executors,他扮演着线程工厂的角色,我们通过Executors可以创建特定功能的线程池。 Exec ...
分类:
其他好文 时间:
2017-04-25 00:36:31
阅读次数:
198
背景 通过做以下一个小的接口系统gate,了解一下mina和java并发包里的东西。A系统为javaweb项目,B为C语言项目,gate是本篇须要完毕的系统。 需求 1. A为集群系统,并发较高,会批量发送给gate消息,而且接受gate返回的消息。 2. gate独立部署,将从A接受到的消息压入队 ...
分类:
编程语言 时间:
2017-04-22 19:48:27
阅读次数:
280
HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMa ...
分类:
其他好文 时间:
2017-04-15 18:28:55
阅读次数:
159
publicclassReentrantLockimplementsLock,java.io.Serializable{
//ReentrantLock有两种锁:公平锁,非公平锁
privatefinalSyncsync;
//并发包基本都是基于aqs
abstractstaticclassSyncextendsAbstractQueuedSynchronizer{...}
//非公平锁
staticfinalclassNonfairSyncextendsS..
分类:
其他好文 时间:
2017-04-14 10:44:59
阅读次数:
142
本节介绍Java并发包中的线程池,它的各个参数的含义都是什么?线程池大小是如何动态变化的?各个典型配置的优缺点是什么?各适用于什么场合?线程池死锁是怎么发生的?如何避免?... ...
分类:
编程语言 时间:
2017-04-11 09:46:25
阅读次数:
220
1. 各种同步控制工具的使用 1.1 ReentrantLock(重用锁) 1)与synchronized的区别是,它需要手动申请锁与解锁,而synchronized是JVM自动处理的。可控性上ReentrantLock更强。 由于ReentrantLock是重入锁,所以可以反复得到相同的一把锁,它 ...
分类:
其他好文 时间:
2017-04-08 12:31:01
阅读次数:
239
上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么引入本篇的主角,Condition,Condition 将 ...
分类:
编程语言 时间:
2017-04-04 12:49:30
阅读次数:
202
探讨Java并发包中的各种队列。Java并发包提供了丰富的队列类,可以简单分为: 无锁非阻塞并发队列:ConcurrentLinkedQueue和ConcurrentLinkedDeque 普通阻塞队列:基于数组的ArrayBlockingQueue,基于链表的LinkedBlockingQueue ...
分类:
其他好文 时间:
2017-03-27 10:37:06
阅读次数:
352
并发包: 1、ConcurrentHashMap 线程安全的HashMap的实现 数据结构:一个指定个数的Segment数组,数组中的每一个元素Segment相当于一个HashTable(一个HashEntry[]) 扩容的话,只需要扩自己的Segment而非整个table扩容 key与value均 ...
分类:
编程语言 时间:
2017-03-26 23:36:02
阅读次数:
223