Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法何时应该返回CompletableFuture?_Java_Asynchronous_Java 8_Future_Completable Future - Fatal编程技术网

Java 方法何时应该返回CompletableFuture?

Java 方法何时应该返回CompletableFuture?,java,asynchronous,java-8,future,completable-future,Java,Asynchronous,Java 8,Future,Completable Future,关于方法何时应该返回CompletableFuture的一般准则是什么?假设有两个类A和B,其中类B有一个执行大量IO的方法performTask(),类A调用performTask()方法 在Java中,可以使用以下方法编写多线程代码: 让方法的调用方决定是否使用ThreadPool异步执行方法。在本例中,A将异步调用performTask()方法,这样类B就不需要使其方法异步 让方法performTask()返回Future或CompletableFuture,以便类a只调用perform

关于方法何时应该返回CompletableFuture的一般准则是什么?假设有两个类A和B,其中类B有一个执行大量IO的方法performTask(),类A调用performTask()方法 在Java中,可以使用以下方法编写多线程代码:

  • 让方法的调用方决定是否使用ThreadPool异步执行方法。在本例中,A将异步调用performTask()方法,这样类B就不需要使其方法异步
  • 让方法performTask()返回Future或CompletableFuture,以便类a只调用performTask()

建议采用哪种方法的一般指导原则是什么?

简短的回答

由你决定

稍长一点的答案

这取决于:

  • 当您知道调用方往往不想等待
    performTask()
    完成时,请使该方法同步

  • 当您知道调用方在调用
    performTask()
    后往往不想立即继续执行操作,并且不关心结果,或者稍后检查结果时,请使该方法异步

  • 当你不知道的时候,看看简短的答案