The JVM itself uses multiple threads, which are likely to use multiple cores (depending on the mood of the OS scheduler).
Your program uses as many threads as you ask to use. If your code is single-threaded, it will be sequential and will not be useful for your multi-core architecture (note that your single thread can use more than one core, but not at the same time).
source share