UseParNewGC usually knowns as "parallel young generation collector" is same in all ways as the parallel garbage collector (-XX:+UseParallelGC), except that its more sophiscated and effiecient. Also it can be used with a "concurrent low pause collector".
See Java GC FAQ, question 22 for more information.
Note that there are some known bugs with UseParNewGC
The (original) copying collector (Enabled by default). When this collector kicks in, all application threads are stopped, and the copying collection proceeds using one thread (which means only one CPU even if on a multi-CPU machine). This is known as a stop-the-world collection, because basically the JVM pauses everything else until the collection is completed.
The parallel copying collector (Enabled using -XX:+UseParNewGC). Like the original copying collector, this is a stop-the-world collector. However this collector parallelizes the copying collection over multiple threads, which is more efficient than the original single-thread copying collector for multi-CPU machines (though not for single-CPU machines). This algorithm potentially speeds up young generation collection by a factor equal to the number of CPUs available, when compared to the original singly-threaded copying collector.
The parallel scavenge collector (Enabled using -XX:UseParallelGC). This is like the previous parallel copying collector, but the algorithm is tuned for gigabyte heaps (over 10GB) on multi-CPU machines. This collection algorithm is designed to maximize throughput while minimizing pauses. It has an optional adaptive tuning policy which will automatically resize heap spaces. If you use this collector, you can only use the the original mark-sweep collector in the old generation (i.e. the newer old generation concurrent collector cannot work with this young generation collector).
From this information, it seems the main difference (apart from CMS cooperation) is that UseParallelGC supports ergonomics while UseParNewGC doesn't.
Using -XX:+UseParNewGC along with -XX:+UseConcMarkSweepGC, will cause higher pause time for Minor GCs, when compared to -XX:+UseParallelGC.
This is because, promotion of objects from Young to Old Generation will require running a Best-Fit algorithm (due to old generation fragmentation) to find an address for this object.
Running such an algorithm is not required when using -XX:+UseParallelGC, as +UseParallelGC can be configured only with MarkandCompact Collector, in which case there is no fragmentation.
XX:+UseParallelGC Use parallel garbage collection for scavenges. (Introduced in 1.4.1)
XX:+UseParallelOldGC Use parallel garbage collection for the full collections. Enabling this option automatically sets -XX:+UseParallelGC. (Introduced in 5.0 update 6.)
UseParNewGC
A parallel version of the young generation copying collector is used
with the concurrent collector (i.e. if -XX:+ UseConcMarkSweepGC is
used on the command line then the flag UseParNewGC is also set to true
if it is not otherwise explicitly set on the command line).
Perhaps the easiest way to understand was combinations of garbage collection algorithms made by Alexey Ragozin
Apply -XX:+UseParallelGC when you require parallel collection method over YOUNG generation ONLY, (but still) use serial-mark-sweep method as OLD generation collection
Apply -XX:+UseParallelOldGC when you require parallel collection method over YOUNG generation (automatically sets -XX:+UseParallelGC) ANDOLD generation collection
Apply -XX:+UseParNewGC & -XX:+UseConcMarkSweepGC when you require parallel collection method over YOUNG generation AND require CMS method as your collection over OLD generation memory
You can't apply -XX:+UseParallelGC or -XX:+UseParallelOldGC with -XX:+UseConcMarkSweepGC simultaneously, that's why your require -XX:+UseParNewGC to be paired with CMS otherwise use -XX:+UseSerialGC explicitly OR -XX:-UseParNewGC if you wish to use serial method against young generation
The purpose of this argument is to enable the use of parallel threads for GC in the young generation.
-XX:+UseParallelGC v/s -XX:+UseParNewGC
-XX:+UseParallelGC is parallel collector and -XX:+UseParNewGC is parallel young generation collector.
Parallel young generation collector is similar to the parallel garbage collector in intent and differs in implementation. Unlike the parallel collector (XX:+UseParallelGC) this parallel young generation collector can be used with the concurrent low pause collector that collects the
tenured generation.
When -XX:+UseParNewGC should be enabled/used?
By default this option is disabled and it is automatically
enabled when you set the -XX:+UseConcMarkSweepGC option. Using the
-XX:+UseParNewGC option without the -XX:+UseConcMarkSweepGC option was deprecated in JDK 8.
In Summary
The whole purpose of this argument is to enable the use of parallel threads for GC in the young generation. In Java 8 use of this argument without the use of CMS collector (-XX:+UseConcMarkSweepGC) is deprecated and with Java 9 this argument itself is deprecated because this argument can only be used with CMS collector and CMS collector itself was deprecated in Java 9.