First, as others say, you are not using multiple threads. This is because you are calling the run () method, which finishes doing work on the calling thread.
Now, to solve the rest of your question, what I would like to say is how to maximize the efficiency of a multi-threaded process. This is not an easy question, but I will give you the basics. (Others, feel free to call.)
The best way to maximize the efficiency of your process is to try to make all threads approximately the same, and try to keep them from blocking. That is, your task is to "balance" the workload so that the application works efficiently.
In general, you cannot designate a thread to work on a specific CPU core; which is usually the task of the OS and the CPU itself. The OS plans the process (using the priorities that you provide), and then the CPUs can do their own planning at the instruction level. Besides setting priorities, the rest of the planning is not completely controlled.
EDITOR: I am attached to semicolons.
source share