Supondo que queremos rodar dois executáveis simultaneamente em um ou mais processadores, como uma barra de progresso e um copiador de arquivos. Para que isso seja possível, iremos usar o Thread.
Vamos criar um exemplo para que se torne mais claro.
Vamos criar então 3 classes: TestaConcorrencia, BarraDeProgresso e CopiadorDeArquivos.
Sendo que tanto na classe BarraDeProgresso quanto no CopiadorDeArquivos, iremos imprimir na tela sua execução 1000 vezes.
Agora vamos chamar a classe principal que vai mostrar essa execução de forma simultânea, fazendo com que os dois executáveis trabalhem juntos para o caso de mais de um processador ou de forma alternada no caso de apenas um processador.