A multi-threaded program will look at the program's instructions (op codes), and dole some of the work out to one CPU and more work to a different CPU. This doling out process is a 'thread'. So, more than one thread? Then it's multi-threading.
There's something called Branch Predicting also, but I don't know if that's old school now or not.