Как понять потоки?
На пальцах: вам нужно выкопать картошку. Обычная программа копай от начала и до конца. Мультипоточная. Вы собираете друзей и  даёте им лопаты и по грядке. Они копают , скорость увеличивается линейно. Колхоз все тоже самое, но людей больше, лопат на всех не хватает. Вы выделяете отдельного человека который раздаёт лопаты, мешки, показывает куда ехать машинам, подгоняет лентяев. Фиг с ним с полем, дали вам колхоз, ваш thredpool разросся, нужен планировщик и локи что бы люди не копали картошку пока нет машин, а например шли на ферму грузить навоз. Вот как то на пальцах о многопоточность
Здравствуйте, поток это очень простая штука :)
Если очень кратко, то это запуск некой подпрограммы отдельно от своей, после чего можно управлять ей {убить, остановить, запустить, получить результат выполнения, узнать жив ли поток и т.д.}. На мой взгляд есть два брата которые помогают ускорять работу производимую программой - это асинхронность и многопоточность. Давайте пока не будем вдаваться в подробности технической реализации :)
Ну вот в принципе и всё.
Потоки нужны чтобы делать несколько вещей сразу. Если ещё проще, то это как человек с несколькими руками, который может каждой рукой делать что-то отдельное.