У меня есть функция, которая должна выполнять две операции: одну, которая заканчивается быстро, и одна из них занимает много времени. Я хочу иметь возможность делегировать длительную операцию в поток, и я не забочусь о завершении потока, но потоки должны быть завершены. Я реализовал это, как показано ниже, но моя вторая операция никогда не выполняется, так как функция выходит после вызова start(). Как я могу гарантировать, что функция вернется, но второй рабочий поток также завершит ее выполнение и не зависит от родительского потока?
public void someFunction(String data)
{
smallOperation()
SecondOperation a = new SecondOperation();
Thread th = new Thread(a);
th.Start();
}
class SecondOperation implements Runnable
{
public void run(){
// doSomething long running
}
}