Usando duas threads o que antes levaria tipo 10 segundos num programa normal, passa a levar 2 segundos. É uma grande otimização.
Eu ainda estou aprendendo aplicar nos meus programas, mas basicamente é dividir as iterações de for e while em funções que processam cada parte em paralelo.
Por exemplo:
se tu quer conferir uma única combinação contra todas as 3.2 milhões da LF, tu usando threads faz algo como:
thread_1 processa do 1 ao 1.6 milhões
thread_2 processa do 1.6 milhões até a 3.2 milhões.
Dai fica como se fossem dois programas num só, porém, cada thread executa em paralelo em núcleos do processador diferente, e por isso o grande aumento de velocidade de processamento.
Não uso Delphi, mas nesse teu processador ai, deve dá pra usar umas 4 ou 8 threads por programa.