当前位置: 首页 > 网络应用技术

多线程的详细信息

时间:2023-03-06 22:40:25 网络应用技术

  可呼叫和可运行的功能大致相似,但是call()函数具有返回值。Allace通常与执行人员服务一起使用

  未来是特定可运行或Callace任务的执行结果。

  未来界面中声明了5种方法

  换句话说,未来提供了三个功能:

  因为未来只是一个接口,所以它无法直接使用它来创建对象,因此有未来的futuretask。

  未来只会实现异步,并且没有意识到回调。当主线程获得时,它将被阻止。您可以询问是否完成异步调用。实际使用,建议使用guava listableFuture来实现异步非OBStruction。目的是执行多任务异步执行。执行结果是通过回调获得的,而无需查询任务状态。

  完整的未来

  徒劳对获得结果非常不便,只能通过阻塞或旋转获得任务结果。

  在Java 8中,一个新类包含大约50种方法:完整的图,它提供了非常强大的未来扩展功能。

  可以在与任务不同的线程中执行completableFuture,还可以使用回调作为同步函数,该函数继续执行以与任务相同的线程执行。它避免了传统回调的最大问题,也就是说,它可以将控制流分成不同的事件处理器。

  完整的future弥补了将来模式的缺点。在完成异步任务后,不必等待结果的结果。,然后,thencompose等,以处理另一个异步事件。

  以下示例将被解释为完整的示例

  异步执行

  计算结果完成时的处理

  处理是完成任务时结果的处理

  转变

  行动

  然后accept

  然后

  复杂的

  组合

  任何一个

  全部

  如果一个Allof失败,您如何能快速结束一切?

  我自己的演示之一

  公共静态void futuredemo2(){){){)

  LeatedExeCutorService executorService = MoreExeCutors.ListeningDecorator(communThreadPool.getPool());

  intstream.rangeclosed(1,10)。foreach(i-> {{{{{{{{{

  可聆听的future listableFuture = executorService.Submit(() - > {

  //对于长期异步计算

  // thread.sleep(3000);

  //然后返回结果

  返回100;

  });

  Futures.Addcallback(listablefuture,新的futurecallback(){{{{

  @Override

  公共void onsuccess(整数结果){

  system.out.println(“通过回调获得可听未来的结果” +结果);

  }

  @Override

  公共空白onfailure(可投掷t){{{

  t.printstacktrace();

  }

  },executorService);

  });

  } 4