Hyper-Threading is a technology which has been around 12 years in the Semiconductor technology. Multi-core threading is a very obvious solution to the increasing demand for processing power.
Now Cores are the basic blocks in CPU which do all the processing tasks and is greatly defines as a hardware block. Threads are the software channels to access the data to and for the CPU cores, threads totally can be defined as a software block.
Now the easiest example to understand cores and threads is by an example:
In a juicer, at a time a single block of vegetable can be inserted and here the juicer is the CORE and the inserting area is the THREAD, so normally a single block is enough to put to the juicer now there are times when there is a time gap between each interval and that gap can be filled by putting another vegetable block increasing the output flow of juice but the power of the juicer(processor) remains the same.
Now if more juice output is demanded then possibilities are to increase the number of juicers or make optimum use of the time gap, which is called Multicore threading and Hyper-Threading respectively. Hyper-Threading increases power consumption but can be useful.