Skip to content

[practice-mistake] 并发工具类库 #18

@Alice52

Description

@Alice52

1. Juc

  1. ThreadLocal | InheritableTL(继承-但看不见修改) | TransmitableTL(继承且看见修改): 线程池中使用之后没有 remove, 导致用户信息错乱, 且会导致内存泄漏
  2. ConcurrentHashMap 只保证提供原子性的读写操作是线程安全的
    • containsKey/size/isEmpty/containsValue/putAll 等都有可能获取中间态数据, 不能作为流程控制
    • sample: 统计大文本每个key出现的次数{CHM+LongAdder+putInAbsent+多线程}
  3. CopyOnWriteArrayList 在大量写的情况下会有性能问题
    • 修改时会先复制出来一份
  4. Map 方法
    • putIfAbsent: HashMap 可以KV 为null, CHM 不可以为null会直接报错
    • computeIfAbsent: Functional 为null 则不会真正的put 进去

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationjava

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions