Watki pozwalaja wykonywac dwa rozne kody jednoczesnie. Wyobraź sobie, że w aplikacji okienkowej masz jeden watek i aplikacja zacznie jakis dlugi proces, np duzo obliczen w petli while, ktore zajma 15 sekund. Bez watkow przez te 15 sekund aplikacja bylaby nieresponsywna, klikalbys a nic by sie nie działo, bo kontekst wykonywanego kodu bylby zacięty w tej petli. Ale jak zrobisz petle w osobnym watku niz obsługa klikniec w przyciski to mimo ze cos sie tam liczy w tle to mozesz korzystać z aplikacji.
EDIT : Nie odpowiedziałem co to ma do konsoli :D. Otóż pisalem kiedys web crawlera, ktory w petli sobie przeszukiwał internety. Mogl dzialac prawie w nieskończoność. Pytanie jak go bezpiecznie zatrzymać (imaczej niz cyrl+c). W pewnym miejscu dane byly zapodywaza bo bazy, przez co ctrl+c moglo moglo przerwać program w zlym momencie i cos zepsuć. Ciezko jest wprowadzic cos z konsoli bo czytanie z konsoli zawiesza program, ktory czeka na input. Na to nie mozemy sobie pozwolić bo petla while musi leciec. Rozwiazanie to flaga stop, ktora bedzie sprawdzana w kazdym obiegu petli i osobny watek którego jedynym zadaniem jest czytanie z konsoli (czekanie na input) i jesli podamy q to ustawia flage stop a petla while przerywa sie gdy obrcny obieg zakonczy sie prawidlowo.