第七十七天

首先明确核心问题:当多个线程同时对共享资源进行读写操作时,若没有同步机制,就会出现数据竞争。像 ArrayList、HashMap 这类集合都是非线程安全的,而 Vector、Hashtable 虽然线程安全,

后来尝试了两种优化方案,一是用  Collections.synchronizedList()  将 ArrayList 包装成线程安全的集合,本质是在每个方法里加了同步锁;二是直接使用 JUC 包下的  CopyOnWriteArrayList ,它采用写时复制的思想,读操作无锁,写操作通过复制新数组实现,更适合读多写少的场景。

对比下来,不同场景的选型逻辑很清晰:低并发场景用  synchronized  包装的集合足够;高并发读多写少用  CopyOnWrite  系列;若涉及复杂的同步逻辑,还可以用  ReentrantLock  手动控制锁的粒度,灵活性更高。

最后复盘时发现,自己之前对“线程安全”的理解停留在表面,忽略了锁粒度和性能之间的平衡。其实写代码时,先明确共享资源的访问方式,再选择合适的同步方案,远比盲目使用线程安全类更重要。

技术的坑都是踩出来的,今天的复盘也算收获满满。

posted @ 2026-01-14 19:19  yang…  阅读(2)  评论(0)    收藏  举报