Poder podrías llamar en cada hilo a un método de un objeto instanciado, aunque es un poco peligroso. Te recomiendo que hagas varias clases con las funcionalidades diferentes. Por ejemplo, para hacer algo como lo que necestias yo haría un ExecutorService como el siguiente con dos hilos Future (cada uno de estos tienen las clases que van a ejecutar algo). De este modo cuando terminen los dos hilos haré algo con el resultado (que en este ejemplo el resultado es un Double, pero podría ser cualquier cosa):
ExecutorService executor = Executors.newWorkStealingPool();
Future<Double> futureUno = executor.submit(new HiloUno());
Future<Double> futureDos = executor.submit(new HiloDos());
executor.shutdown();
executor.awaitTermination(5, TimeUnit.SECONDS);
Double resultadoUno = futureOne.get();
Double resultadoDos = futureTwo.get();
Las clases de antes HiloUno e HiloDos van a tener las funcionalidades diferentes. En el método sobrescrito call() es donde va a estar el trabajo. El contenido de estas clases podría ser algo así:
import java.util.List;
import java.util.concurrent.Callable;
public class HiloUno implements Callable<Double>{
@Override
public Double call() throws Exception {
//Algo que hacer
return 123.0; //Devuelvo un Double en este caso
}
}
Espero que haya solucionado algo :D