I know that now that most processors have two or more cores, multicore programming is all the rage. Is there functionality to utilize this in Java? I know that Java has a Thread class, but I also know this was around a long time before multicores became popular. If I can make use of multiple cores in Java, what class/technique would I use?
I know that now that most processors have two or more cores, multicore programming
Share
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.
java.util.concurrentExecutors
Executoris a simple standardized interface for defining custom thread-like subsystems, including thread pools, asynchronous IO, and lightweight task frameworks.Queues
The java.util.concurrent
ConcurrentLinkedQueueclass supplies an efficient scalable thread-safe non-blocking FIFO queue.Timing
The
TimeUnitclass 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.Synchronizers
Four classes aid common special-purpose synchronization idioms.
Semaphoreis a classic concurrency tool.CountDownLatchis a very simple yet very common utility for blocking until a given number of signals, events, or conditions hold. […]Concurrent Collections
Besides Queues, this package supplies a few Collection implementations designed for use in multithreaded contexts:
ConcurrentHashMap,CopyOnWriteArrayList, andCopyOnWriteArraySet.This also comes in handy if you want to match the number of threads to the number of available CPUs for example: