I imagine that, just like Vector, Enumeration is used in way too many places to even think of deprecating it.
Take a look at the dimensions of your loop!
If I reduce your code to 400.000 (!) iterations, it runs in <40ms on my machine. I think in many circumstances you wouldn't even notice that the program is spending time at all - even showing a simple output to the user is likely to take more time.
Not of each, but of the important ones. It's the 90/10 rule at work: allmost every system is spending around 90% of its time in 10% of its code. That is, if you optimize the wrong 90%, you only get a 10% performance improvement, but if you find the bottlenecks, you get a significantly better performance for less effort. That is why profiling is so important before optimizing code.
1.5x on my sytem when using your code. And when you make your loop actually *do* something, it becomes even less.
If you have a problem integrating with other peoples code does that mean that you write your own dB drivers, JVM, and OS?
Multithreading problems are really hard to find, so I am willing to use all the help I can get. I think of that as rather professional behaviour
Conclusion: If you have a java-program - run it twice?