2025年4月

半个多月前,网易云音乐的工作人员和我取得了联系。对方相中了《100%矛盾集合体》这首歌,想购买它的独家授权。

听到这个消息,我激动不已。

今天,预付的版税到账了。不以音乐为生的我,终于也能凭借音乐,被大众和资本认可,赚到自己的一笔收入。

回顾自己人生的前 26 年,很庆幸,无论喜与悲,我总有音乐相伴。

- 阅读剩余部分 -

首先来看一段 Java 代码:

int sumMapElements(ConcurrentHashMap<Integer, Integer> map) {
  int sum = 0;
  Enumeration<Integer> it = map.elements();
  while (it.hasMoreElements()) {
    sum += (int) it.nextElement();
  }
  return sum;
}

函数 sumMapElements 使用迭代器遍历了 ConcurrentHashMap 参数的所有元素,并求了它们的总和,将结果作为返回值返回。

整个代码在实现上相当直观,也没什么弯弯绕绕。我敢说,如果让你来实现一个类似的操作,你十有八九也会写出差不多的代码——或者从不知道哪搜出来的二手 CSDN 文章里偷一段。

作为一个非常基础的容器,ConcurrentHashMap 在并发场景里有着广泛的应用。成千上万日日夜夜里,这段代码的灵魂——也就是里面的那个迭代器,伴随着网卡缓冲区里的车水马龙,流淌在无数台跑着 Java 应用的服务器中。

然而,当你用 OpenJDK 2324,用默认的 G1 GC,分别运行同样的代码(需要 JMH),你会发现一个令人震撼的事实:

23 居然比 24 慢了 20% 还多!

- 阅读剩余部分 -