Entendiendo para que sirven puedes implementar una aplicacion real.
Sin mucho tecnicismo un thread sirve para ejecutar varios procesos a la vez reduciendo el tiempo de la ejecucion total, o cargar en ellos codigos de largo trabajo sin bloquear la UI del programa.
Por ejemplo, tienes un programa que ejecute una funcion pesada que tarda 20 segundos en realizarse y otra de 15 segundos. El total de ejecucion sin hilos es de 20 + 15 segundos y hasta que este no termine, la interfaz estara "congelada" (dando la impresion de que el programa deja de funcionar de cara al usuario final), ademas de que hasta que no termine dicha funcion, no podras realizar nada mas.
Para arreglar esto, se usan hilos, puedes probarlo tu mismo haciendo este sencillo ejemplo.
for(int i = 0; i <= 9999999; i++)
{
System.
out.
print("Numero " + i
); }
Si ejecutas ese codigo, hasta que no terminase el bucle no podrias seguir usando la aplicacion, se quedara ejecutandolo hasta que termine.
Ahora si lo ejecutas en un hilo:
public void run(){
for(int i = 0; i <= 9999999; i++)
{
System.
out.
print("Numero " + i
); }
}
}
thread.start();
De esa manera veras que sigue ejecutando el codigo del bucle sin congelar la UI permitiendo por ende, que puedas realizar mas tareas simultaneamente.