Agrandes rasgos toda aplicación se ejecuta linealmente, o sea no comienza a hacer algo asta que allá terminado con lo anterior (entre eso esta el pintado de la aplicación), por eso una aplicación que “se congela” es simplemente una aplicación que no pinta ninguna de sus ventanas hasta que haya acabado el anterior trabajo (conexiones por red, manejo de grandes volúmenes de datos, gigantescas consultas, etc). He ahí donde entran los hilos, permitiendo que el trabajo se ejecute en un segundo hilo, dejas al hilo principal libre para pintar ventanas, procesar mensajes, crear mas tareas, etc. En pocas palabras un hilo hijo es una bifurcación del hilo principal.
En cualquier caso (por que general mente nadie me entiende Xd), te dejo un link sobre este tema.
http://elvex.ugr.es/decsai/builder/threads/index.html