Я смотрел на реализацию ThreadLocal
в JDK, из любопытства, и я нашел это:
/**
* 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?