面试阿里被质问:ConcurrentHashMap线程安全吗( 三 )


CopyOnWriteArrayList V.S 普通加锁ArrayList读写性能

  • 测试并发写性能
  • 测试结果:高并发写 , CopyOnWriteArray比同步ArrayList慢百倍
  • 测试并发读性能
  • 测试结果:高并发读(100万次get操作) , CopyOnWriteArray比同步ArrayList快24倍
高并发写时 , CopyOnWriteArrayList为何这么慢呢?因为其每次add时 , 都用Arrays.copyOf创建新数组 , 频繁add时内存申请释放性能消耗大 。
4 总结4.1 Don't !!!
  • 不要只会用并发工具 , 而不熟悉线程原理
  • 不要觉得用了并发工具 , 就怎么都线程安全
  • 不熟悉并发工具的优化本质 , 就难以发挥其真正性能
  • 不要不结合当前业务场景 , 就随意选用并发工具 , 可能导致系统性能更差
4.2 Do !!!
  • 认真阅读官方文档 , 理解并发工具适用场景及其各API的用法 , 并自行测试验证 , 最后再使用
  • 并发bug本就不易复现 ,多自行进行性能压力测试
参考