I was running this bit of code to compare performance of 3 equivalent methods of calculating wraparound coordinates:
public class Test {
    private static final float MAX = 1000000;
    public static void main(String[] args) {
        long time = System.currentTimeMillis();
        for (float i = -MAX; i <= MAX; i++) {
            for (float j = 100; j < 10000; j++) {
                method1(i, j);
                //method2(i, j);
                //method3(i, j);
            }
        }
        System.out.println(System.currentTimeMillis() - time);
    }
    private static float method1(float value, float max) {
        value %= max + 1;
        return (value < 0) ? value + max : value;
    }
    private static float method2(float value, float max) {
        value %= max + 1;
        if (value < 0)
            value += max;
        return value;
    }
    private static float method3(float value, float max) {
        return ((value % max) + max) % max;
    }
}
I ran this code three times with method1, method2, and method3 (one method per test).
What was peculiar was that method1 spawned several java processes, and managed to utilize nearly 100% of my dual core cpu, while method2 and method3 spawned only 1 process and therefore could only take up 25% of my cpu (since there are 4 virtual cores). Why would this happen?
Here are the details of my machine:
Java 1.6.0_65
Macbook Air 13" late 2013
 
    