why does this programs speed not increase?
Contrary to your belief, running a program with more threads than the number of processors (Runtime.getRuntime().availableProcessors()) will not increase the performance of your program, in fact it will decrease performance. The decrease in performance occurs because your processor has to jump from thread to thread. That is not a time-free operation.

The exception to this rule being if you have a lot of blocking I/O operations in your threads, in that case, more threads than the number of processors may be appropriate for your use.

I suggest you use an ExecutorService which runs with the correct number of threads (possibly obtained through one of the factory methods in Executors) and submit tasks for it to complete.