How to find factorial of a BigIntegers using Multithreads

This is the fourth solution to find the factorial from the ArrayList of big integers using Multithreads. This program uses the Multithreads concept to find the factorial of given big integers in parallel to save the time.

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

public class FactorialOfBigNumbers {

	public static void main(String args[]) throws InterruptedException {

		List<BigInteger> numList = new ArrayList<BigInteger>();
		numList.add(BigInteger.valueOf(33));
		numList.add(BigInteger.valueOf(19));
		numList.add(BigInteger.valueOf(79));
		numList.add(BigInteger.valueOf(109));

		List<FactThread> threads = new ArrayList<FactThread>();

		for (BigInteger bI : numList) {
			threads.add(new FactThread(bI));
		}

		for (Thread thread : threads) {
			thread.start();
		}
		// Main thread wait until all the child threads completes.
		for (Thread thread : threads) {
			thread.join();
		}

		for (int i = 0; i < numList.size(); i++) {
			FactThread factThread = threads.get(i);
			if (factThread.isFinished()) {
				System.out.println("The factorial of " + numList.get(i) + " is " + factThread.retAnswer());
			} else {
				System.out.println("The factorial of " + numList.get(i) + " is in Progress");
			}
			Thread.sleep(1000);
		}
	}

	public static class FactThread extends Thread {

		private BigInteger FactOfNum = BigInteger.ONE;
		private BigInteger numVal;
		private boolean isFinished;

		// Initialize the constructor with the give number
		FactThread(BigInteger bI) {
			this.numVal = bI;
		}

		// call the FactorialOfbI routine from the run, and set finished to TRUE
		public void run() {
			FactOfNum = FactorialOfbI(numVal);
			isFinished = true;
		}

		private BigInteger FactorialOfbI(BigInteger num) {
			// Iterate the loop to find factorial of given BigInteger
			while (num.compareTo(BigInteger.ONE) != 0) {
				FactOfNum = FactOfNum.multiply(num);
				num = num.subtract(BigInteger.ONE);
			}
			return FactOfNum;
		}

		private boolean isFinished() {
			return isFinished;
		}

		private BigInteger retAnswer() {
			return FactOfNum;
		}
	}
}
OUTPUT-
The factorial of 33 is 8683317618811886495518194401280000000
The factorial of 19 is 121645100408832000
The factorial of 79 is 894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000
The factorial of 109 is 144385958320249358220488210246279753379312820313396029159834075622223337844983482099636001195615259277084033387619818092804737714758384244334160217374720000000000000000000000000