我是一名c#开发人员,现在开始转换到Java ...并开始比较功能
我在Java并发中遇到了这个Future https://docs.oracle.com/javaee/6/tutorial/doc/gkkqg.html 根据文档示例,它说 即使支付处理器需要很长时间,客户端也可以继续工作,并在处理最终完成时显示结果。
所以我们可以假设Future与c#async await相同..如果不是请lemme知道差异......
根据我的知识同步,等待我在我们的移动操作中使用过 不希望UI线程在与apis或服务交互时被阻止。
答案 0 :(得分:2)
Future
只是一个界面。它本身不能异步处理任何东西。当您提交要在Future
中异步执行的工作时,会收到ExecutorService
个对象。使用Future.get()
阻止当前线程,直到结果准备就绪。当然,在提交作品和尝试获得结果之间,你应该在当前线程中做一些有用的事情。
答案 1 :(得分:0)
Java Future 不等同于 C# async/await。简单地说,它是可以在主线程中等待的异步任务(在不同线程中运行)的结果。 当调用返回 Future 的方法时,该方法将在不同的线程中执行,当调用者线程中需要结果时,您可以使用 Future.get() 阻止该线程。
虽然 C# async/await 并不意味着使用不同的线程。它只挂起封闭方法并将执行返回给调用者方法,其中两个方法可以在同一线程中执行。