Calculating the Factorial of a number
A few comments:



import java.util.concurrent.*;


Never do wildcard imports unless you're doing a one-time, throw-away program. Maybe, in Java 20 or so, they introduce a class java.util.concurrent.Factorial (contrived example), and then you have a name collision with one of your classes. Better stick to individual imports (or have your IDE organize the imports).



Thumbs up for attaching javadoc to all public elements.



public long getFactorialWithRecursion(final int number) {
    return factorialRecursion(number);
}


I'd skip the indirection from getFactorialWithRecursion() calling factorialRecursion() and write

public long getFactorialWithRecursion(final int number) {
    if (number &lt;= 0) {
        return 1;
    }
    return number * getFactorialWithRecursion(number - 1);
}




Other SO members already commented that computing a factorial with multiple threads might not be a useful application, but I understand that this is for exerecise purposes.

The while loop in getFactorialMultiThreaded makes it hard to read and understand the code, with the two loop variables startIndex and pivot having their operations spread over many lines of code. I'd write something like

for (int startIndex = 1; startIndex &lt;= number; startIndex += JOB_SIZE) {
    int endIndex = Math.min(startIndex + JOB_SIZE - 1, number);
    partialFactorialJobs.add(new PartialFactorialJob(startIndex, endIndex));
}


Similar thing applies to the while loop in your call method, I'd prefer a for loop instead.



As your PartialFactorialJob class doesn't access anything from the enclosing Factorial instance, you should make it static (otherwise it carries around a useless internal reference to its enclosing instance, typically visible in your debugger as this$1 or similar).