Concurrent并发库常见问题总结

sgafdsg 2011-04-18

对于Android开发者来说掌握Java的concurrent并发库十分重要,本次Android123就并发库的一些常见问题做总结:

1.原子操作

如果你过去开发过Win32驱动可能发现很多NativeAPI都是有关原子操作的(atomicoperation),对于Java来说int、boolean这样的类型是原子的,而long和double就没有那么幸运了。原子操作是什么呢?比如说Java线程的停止,在早期的JDK中提供了Thread.stop方法,但这个并不是线程安全的,而目前我们停掉一个Java线程都是用一个boolean变量来设置一个标记,你考虑这个boolean标记的改变是通过外部的其他线程,这样产生的同步问题如何解释呢?这就是原子操作带来的好处,对于Long型我们可以使用java1.5以后加入的concurrent.atomic的AtomicLong,对于Android来说支持以下原子类型:

AtomicBoolean、AtomicInteger、AtomicIntegerArray、AtomicIntegerFieldUpdater<T>、AtomicLong、AtomicLongArray、AtomicLongFieldUpdater<T>、AtomicMarkableReference<V>、AtomicReference<V>、AtomicReferenceArray<E>、AtomicReferenceFieldUpdater<T,V>和AtomicStampedReference<V>。

2.并发库的CopyOnWriteArrayList

对于CopyOnWrite机制可以解决读取频繁,写入较少时的并发效果,有关这方面内容我们在Android开发之Java并发包集合类性能分析有过讲解。

3.

相关推荐