出于好奇,我一直在研究JDK中ThreadLocal
的实现,然后我发现了这个:
/**
* Increment i modulo len.
*/
private static int nextIndex(int i, int len) {
return ((i + 1 < len) ? i + 1 : 0);
}
看起来很明显可以使用简单的return (i + 1) % len
实现,但我认为这些人懂他们的东西。你有什么想法为什么他们要这样做?
此代码高度面向性能,使用自定义映射来保存线程本地映射,使用弱引用帮助GC变得聪明等等,所以我想这是一个性能问题。在Java中取模速度慢吗?