Я хочу установить значение переменной асинхронно.После этого я хочу получить это значение на более позднем этапе.Как я могу это сделать?Это то, что я сейчас делаю, чтобы добиться этого.Это правильная реализация или я должен был пойти на CompletableFuture?
Когда выполняется вызов rest, это один из первых вызываемых методов.
public class A{
@Autowired
private Helper helper;
private final ExecutorService executor = Executors.newFixedThreadPool(10);
public void stepOne(Model model) {
MyObj myObj = model.myObj;
// helper.decrypt() returns a String
Future<String> futureNumber = executor.submit(() -> helper.decrypt());
myObj.setFutureNumber(futureNumber);
}
}
// coming to following method after awhile going to various other classes / methods
// now I need the value myObj.getFutureNumber().
public class B{
public void stepTwo(Model model) {
// model should now have the value 100
MyObj myObj = model.myObj;
final String number = null;
try{
myObj.setNumber(myObj.getFutureNumber().get());
}catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
if(myObj.getNumber() == 100){
// do something
}
}
}
Это MyObj
public class MyObj{
private String number;
private Future<String> futureNumber;
// get set methods
}