1、AtomicInteger 是线程安全的,而i++这种是线程不安全的,在多线程高并发的时候用AtomicInteger ,AtomicDouble同理。
2、ConcurrentHashMap是线程安全的,而HashMap是线程不安全的,HashTable是线程安全的,ConcurrentHashMap结合两种的优点,把HashMap分成16个(默认)segment,每个segment是独立的,修改一个segment不会影响其他segment,从而达到了线程安全,当然如果有多个线程去修改一个segment,那就会阻塞。参考http://blog.youkuaiyun.com/imzoer/article/details/8621074
3、Collections.synchronizedMap(),使map变成安全的。其他集合如List,Set等也有相关的方法。
4、CopyOnWriteArrayList 实现原理是在修改时先copy一份,然后修改copy的,如果有其他读线程来读数据,就读原来的,等copy的修改完后再把引用指向新的,即copy的,CopyOnWriteArrayList 适合在读多写(增、删、改)少的情况下。参考:http://www.cnblogs.com/dolphin0520/p/3938914.html
5、BlockingQueue(参考http://www.cnblogs.com/samqiu/p/4279836.html)
a、ArrayBlockingQueue 初始化时一定要指定个数,否则不能初始化,用在处理并发量特别大的时候,相当于限流的作用,如12306春运放票的时间点。
b、LinkedBlockingQueue 初始化不一定要指定队链个数,用于处理并发量较高,如用于12306接近春运非放票时间点。
c、SynchronousQueue 无缓冲队链,来一个处理一个,如用在12306平时的放票中。