Concurrent并发库常见问题总结
2011-07-24 08:14:03 来源:本站整理对于Android开发者来说掌握Java的concurrent并发库十分重要,本次Android就并发库的一些常见问题做总结:
1. 原子操作
如果你过去开发过Win32驱动可能发现很多Native API都是有关原子操作的(atomic operation),对于Java来说int、boolean这样的类型是原子的,而long和double就没有那么幸运了。原子操作是什么呢? 比如说Java线程的停止,在早期的JDK中提供了Thread.stop方法,但这个并不是线程安全的,而目前我们停掉一个Java线程都是用一个 boolean变量来设置一个标记,你考虑这个boolean标记的改变是通过外部的其他线程,这样产生的同步问题如何解释呢? 这就是原子操作带来的好处,对于Long型我们可以使用java 1.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并发包集合类性能分析 有过讲解。
Tags:Concurrent 并发 常见问题
编辑录入:coldstar [复制链接] [打 印]赞助商链接