Threads can be started (by calling start()) just once. You can have a thread that runs multiple tasks, though, by having its body be a loop which runs assigned tasks -- something like
The getNextTask() method could simply block (using wait()) until there was work available to do. This is how "thread pools" work.