Does Java have support for multicore
Yes. It also has been a platform for other programming languages where the implementation added a “true multithreading” or “real threading” selling point. The G1 Garbage Collector introduced in newer releases also makes use of multi-core hardware.
Java Concurrency in Practice
Try to get a copy of the Java Concurrency in Practice book.
If I can make use of multiple cores in
Java, what class/technique would I
Utility classes commonly useful in
concurrent programming. This package
includes a few small standardized
extensible frameworks, as well as some
classes that provide useful
functionality and are otherwise
tedious or difficult to implement.
Here are brief descriptions of the
Executor is a simple standardized interface for defining custom thread-like subsystems, including thread pools, asynchronous IO, and lightweight task frameworks.
ConcurrentLinkedQueue class supplies an efficient scalable thread-safe non-blocking FIFO queue.
TimeUnit class provides multiple granularities (including nanoseconds) for specifying and controlling time-out based operations. Most classes in the package contain operations based on time-outs in addition to indefinite waits.
Four classes aid common special-purpose synchronization idioms.
Semaphore is a classic concurrency tool.
CountDownLatch is a very simple yet very common utility for blocking until a given number of signals, events, or conditions hold. […]
Besides Queues, this package supplies a few Collection implementations designed for use in multithreaded contexts:
This also comes in handy if you want to match the number of threads to the number of available CPUs for example:
int n = Runtime.getRuntime().availableProcessors();