使用copyOnWriteArrayList()的好处、缺点?
好处
1.位于java.util.concurrent包下,这个类是为并发而设计;
2.读写分离,绝对的线程安全。
缺点
1.随着copyOnWriteArrayList内元素的逐渐增加、其的修改代价会越来越高。
2.最终一致,线程a读取的数据未必是最新的数据,可能在线程a读取数据之后线程bcd都对数组进行了修改,但虽然线程a读取的数据不是最新的,后来的线程efg读取的数据一定是线程abcd修改过后的数据,因此其具有最终一致。最终一致不适用于用户对数据的实时性要求非常高的情况。
参考:java-01-初识CopyOnWriteArrayList
一点感想
最近使用viewModel+livedata的频率很高,越来越觉得给viewmodel注册监听器是很巧妙的设计,之前因为viewmodel必须要用在有生命周期的类中,有时候需要在自定义的工具类更新数据,感觉用起来很不方便,现在通过listener可以方便的在没有生命周期的类中更新livedata的数据。
网友评论