Executando uma tarefa em paralelo a outra tarefa

Eu tenho o seguinteFoo classe que usaFooProcessor classe. Então, o que eu quero fazer é, ao executar o método de processo de instância cp1, em paralelo eu quero corrercp2.process().

public class Foo {

    public static void main(String [] args){

        FooProcessor cp1 = new FooProcessor();
        FooProcessor cp2 = new FooProcessor();

        cp1.process();
        // in parallel process cp2.process();
    }

}

public class FooProcessor {
    public void process(){
        System.out.println("Processing..");
    }
}

No entanto, eu quero cp1 sequencialmente, então eu quero que ele seja executado e completo, se cp2 não completar ou falhar, está bem. Se falhar, quero juntar os resultados. Não está a devolver nada neste exemplo mas quero devolver o resultado.

Para este propósito, deve usar o TaskExecutor? ou Thread?

Eu quero apenas cp2 para rodar em paralelo ao cp1. ou se eu adicionar mais vamos dizer cp3, eu quero que seja executado em paralelo, bem como cp1.

questionAnswers(5)

yourAnswerToTheQuestion