java并发
郭嵩阳
这个作者很懒,什么都没留下…
展开
-
ScheduledThreadPoolExecutor 取代timer
Timer只创建唯一的线程来执行所有timer任务。如果一个timer任务执行很耗时,会导致其他TimerTask的事效准确性出问题。 例如:一个TimerTask每10秒执行一次,而另一个TimerTask每40秒执行一次,重复出现的任务要么会在耗时的任务完成后快速连续执行 4次,要么完全“丢失” 4次调用(取决于它是否按照固定的频率或延迟进行调度)。 ScheduledTrreadPo原创 2012-11-26 13:15:29 · 697 阅读 · 0 评论 -
死锁()
安全性和活跃度通常相互牵制。我们使用锁来保证线程安全,但是滥用锁可能引起锁顺序死锁(lock-ordering deadlock) 死锁:当一个线程永远占用一个锁,而其他线程尝试去获得这个锁,那么他们将永远被阻塞。当线程A占有锁L时,想要获得锁M,但同时,线程B持有M,并尝试获得L,两个线程将永远等待下去。这种情况是死锁的最简单形式(或称致命拥抱,deadly embrace),发生在多原创 2013-03-27 18:17:22 · 789 阅读 · 0 评论 -
AtomicInteger
AtomicI nteger是一个持原子操作的Integer类,在没有AtomicInteger前,要实现一个按顺序获取的Id,需要加锁。 incrementAndGet() 此方法为先获取当前的value属性值,然后将value加1,赋值个一个局部的next变量,很明显,这两步都是线程非安全的,关键的方法是如下这行代码: if(compareAndSet(current, next)){原创 2013-04-08 14:18:05 · 697 阅读 · 0 评论 -
序列化/反序列化
对于java的网络通信而言,将对象转化为流然后进行网络传输是基本也最常用的方法,而要把对象转化为流及将流还原为对象,最常用的方法就是JAVA自带的序列化。 采用java序列化的情况下,类必须实现Serializable接口或Extrnalizable接口。可已通过是实现Externalizable接口、编写私有的writeObject或writeReplace方法。给属性增加transient或原创 2013-04-07 14:36:56 · 530 阅读 · 0 评论 -
concurrenthashmap
ConcurrentHashMap是线程安全的HashMap的实现 和HashMap一样,同样有initialCapacity和loadFactor属性,多了一个concurrentyLevel属性,在调用构造器的情况下,这三个属性分别为16,0.75,16。 设置了以上三个属性值后,基于以下方式计算size int sshhift = 0; int ssize = 1; while(原创 2013-04-06 11:44:06 · 979 阅读 · 0 评论 -
CopyOnWriteArraySet
CopyOnWriteArraySet基于CopyOnWriteArrayList实现,其唯一的不同是在add时调用的是CopyOnWriteArrayList的addIfAbsent方法.adIfAbsent方法同样采用锁保护,并创建一个新的大小+1的Object数组。遍历当前Object数组,如Object数组中已有了当前元素,则直接返回,如果没有则放入Object数组的尾部,并返回。 从以原创 2013-04-05 19:09:34 · 5568 阅读 · 0 评论 -
双重检查加锁 之单例模式并发
public Class Singleton{ private volatile static Singleton instance; private Singleton(){}; public static Singleton getInstance(){ if(instance==null){ synchronized (Singleton.class){原创 2013-04-02 15:04:35 · 523 阅读 · 0 评论 -
Java枚举应用方法
JDK1.5引入了新的类型------枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 public enum Color { RED, GREEN, BLA原创 2012-11-29 16:04:57 · 399 阅读 · 0 评论 -
Java语法糖
语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言的功能并没有影响。 Java中的泛型,变长参数,自动拆箱/装箱,条件编译等都是,下面做简单的介绍和分析。 泛型 与原创 2012-11-29 16:06:04 · 472 阅读 · 0 评论 -
Java程序为什么需要数据库连接池
引言 java应用开发中经常有程序员讲需要配置数据库连接池,如果不配置连接池,应用在大量用户访问的情况下会发生数据库连接异常,也就是会说连不上数据库,然后如数家珍的列举一大堆连接池组件,比如:dbcp、c2p0、bonecp。。。。,各个都系出名门,都号称具有什么什么优势,更有好事者自己开发一个连接池。那为什么要引入连接池呢?换句话说引入连接池会带来什么好处呢?下面就让我们来分析一下,探测一原创 2012-11-29 16:03:26 · 956 阅读 · 0 评论 -
uml
http://hi.baidu.com/wh_jacky/item/eec60b13477cee8398ce332f转载 2012-11-27 15:11:25 · 256 阅读 · 0 评论