Это точно работа на будущее.
ExecutorService service = Executors.newFixedThreadPool(2);
Future<Object> future1 = service.submit( ()->{
takeInfofromDB();
return doSomeLongCalculationsWithThatData();
} );
Future<Object> future2 = service.submit( ()->{
takeInfofromDB2();
return doSomeLongCalculationsWithThatData2();
} );
Object result1 = future1.get();
Object result2 = future2.get();
Также на другой ноте. С java 11 и выше вы можете использовать var.
var thread1 = new Thread() {
private Object result;
@Override
public void run() {
takeInfofromDB();
result = doSomeLongCalculationsWithThatData();
}
public Object getResult() {
return result;
}
}
Тогда он сохраняет ваши новые методы.
thread1.start();
thread1.join();
Object result = thread1.getResult();