Another divide and conquer:
public class Print100 {
    public static void main (String...args) {
        Runnable r1 = new Runnable () {
            int n;
            public void run () {
                System.out.println(++n);
            }
        };
        fourTimes(fiveTimes(fiveTimes(r1))).run();
    }
    public static Runnable twice (Runnable a) {
        return add(a,a);
    }
    public static Runnable fourTimes (Runnable a) {
        return twice(twice(a));
    }
    public static Runnable fiveTimes (Runnable a) {
        return add(a,fourTimes(a));
    }
    public static Runnable add (final Runnable a, final Runnable b) {
        return new Runnable () {
            @Override
            public void run () {
                a.run();
                b.run();
            }
        };
    }
}