Since your main problem is having 47 threads instead of 50 and that you did not noticed 2500 'Hello' messages instead of 50, I suspect the problem is your method of counting.
Quote:
The question is-
Write a program called ReverseHello.java that creates a thread (let's call it Thread 1). Thread 1 creates another thread (Thread 2); Thread 2 creates Thread 3; and so on, up to Thread 50. Each thread should print "Hello from Thread !", but you should structure your program such that the threads print their greetings in reverse order.
Your code is not doing this at all, It is not a little different, it is completely different. A complete rewrite is in order.