I do not believe that any current, production JVM implementations do automatic multithreading. They may use other cores to collect garbage and some other households, but if your code is expressed in a consistent manner, it is difficult to automatically parallelize it and still maintain accurate semantics.
There may be experimental / research JVMs that try to parallelize areas of the code that the JIT may perceive as embarrassing parallels, but I have not heard of such scenarios for production systems. Even if the JIT noticed this, it would probably be less efficient than developing code for parallelism in the first place. (By writing code sequentially, you can easily end up making design decisions that will prevent automatic parallelism from being unintentionally.)
Jon Skeet 01 Oct '10 at 6:20 2010-10-01 06:20
source share