java如何异步设置值并在稍后阶段获取
我希望异步设置变量的值。接下来,我希望在稍后阶段获得该值。我该怎么做?这就是我目前为实现这一目标所做的。这是一个正确的实现,还是我应该去追求一个完美的未来
当进行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
}
# 1 楼答案
依我看,有了
CompletableFuture
,你可以更轻松地异步设置数字。以下是一种可能的方法: