Он может использовать несколько ядер для запуска разных потоков, но не использует их параллельно для 64-битных вычислений. 64-битная длина в основном хранится как две 32-битные целые. Чтобы добавить их, необходимо добавить два, отслеживая бит переноса. Умножение похоже на умножение двух двузначных чисел, за исключением того, что каждая цифра находится в базе 2 ^ 32 вместо базы 10. Так и для других арифметических операций.
Правка о скорости: я могу только догадываться о разнице в скорости. Для сложения требуется два сложения вместо одного, а для умножения (я думаю) потребуется четыре умножения вместо одного. Тем не менее, я подозреваю, что если все можно сохранить в регистрах, то фактическое время вычислений будет уменьшено на время, необходимое для перехода в память дважды для чтения и дважды для записи, поэтому мое предположение примерно вдвое больше для большинства операции. Я полагаю, что это будет зависеть от процессора, конкретной реализации JVM, фазы луны и т. Д. Если бы вы не занимались сложными вычислениями, я бы об этом не беспокоился. Большинство программ проводят большую часть своего времени в ожидании ввода-вывода на диск или в сеть.