Are you sure about this? Due to the problems with multi-core memory
models I would expect a lot of Java code to fail due to lack of proper
synchronization (which also handles memory synchronization between
CPUs).
Threaded code that doesn't synchronize properly will experience buggy
behavior even on single-CPU systems. Threaded Java code that does
synchronize properly should not experience buggy behavior on multi-CPU
systems (at least, none that it can't also exhibit on single-CPU
systems, i.e. buggy behavior that it can exhibit due to having bugs
unrelated to race conditions, deadlocks, and other concurrency issues)
and should naturally use the available cores subject to OS
multiprocessing support and any OS affinity configuration. (Windows
users can use task manager to force a running javaw.exe onto a single
core or more generally a specific subset of the available cores, for
example, but by default it will spread out to use them all, at least
under the ubiquitous XP SP2.)
Bug-free compute-intensive threaded Java code appears to function
correctly and attain full CPU utilization on a dual-core Athlon with
XP SP2 and Java 1.6.0_0something, in actual practise, also.