^ True, and a better treatment of the practicalities than in my post. I think that the two together pretty much exhaustively answer the OP's question... OP, what's your take on these comments?

They greatly help.

Based on the way these benefits grow with n, and the fact that merge sort does take O(n) memory, you are probably better off switching between different sorting algorithms depending on the size of the data you are sorting (ex. see Intro Sort, which is a combination of Heapsort and Quicksort).

Indeed. I have been experimenting with QuickSort and Insertion sort, how ever I have not taken a look in to Heapsort. I will look in to that.

The main reason I am looking in to multithreading Mergesort is that I do CFD calculations for a waterblocks and the arrays that need to be sorted are HUGE, in the order of at least, 5000,000 doubles and multithreading this and using Mergesort to sort it would help out a lot. Yes, I could use something like Excel but writing this program would give me a much better understanding and performance. I also plan to expand this program to a multi platform (hence why Java was a very logical option) in to a quite robust calculator for CFD/thermodynamic calculations once I learn more in Collage *Currently in Senior year at Highschool).