当前位置:首页 >> 中医诊断 >> Java:理解Java中的CallableAPI和FutureAPI

Java:理解Java中的CallableAPI和FutureAPI

发布时间:2023-03-09

在java之前,Runnable 终端均提可供多内核编程的基本机能。它有很多上限。Callable 和 Future 终端解决了许多上限。

Runnable终端

Runnable 终端用作以外一个有意由内核执行者的类。它有一个单独的无表达式分析方法,统称 run(),它需被解决问题的类遮盖。这个终端的中心思想是为那些想要在字符仍在执行者之前执行者的对象提可供一个统一标准贸易协定——换句话说,一个正在运营的字符段调用另一段字符而不被停止或停止(同时执行者)。有一个叫做 Thread 的类,它提可供相同的机能,但基本上在于它需是子类(后继者)才能运用于。存在终端和类的状况是为了超出相同的目标,这是Java设计所遵循的建议:除非我们有意通过可用一个或多个类来相反它的含义,否则不应后继者类。它的分析方法和增强它的要素。通过解决问题 Thread 类的也就是说终端,统称 Runnable,我们基本上可以挣脱扩展到类(子类化)的重担,同时在我们的服务器端之前获得内核解决问题的全部益处。Java API 文档也符合相同的点子:在大多数情况下,如果你有意遮盖 run() 分析方法而不是其他 Thread 分析方法,则无论如何运用于 Runnable 终端。

请注意,多内核编程是一个巨量而繁复的课题。Runnable 终端均提可供基本机能。当执行者长可用并且应用服务器端希望在执行者间来进行无线通信时,这会遭受轻微的上限。因为 run 分析方法不离开绝对值,所以跨执行者内核来进行无线通信的唯一分析方法是运用于构建的可变数据。直到现在,构建数据的弊端是它们需连动才能在调用内核间来进行读写。Callable 终端借此解决这个上限。

Callable终端

Callable终端目的界定一个离开结果并可能引来异常的任务。它在 java.util.concurrent 包之前声明。此终端还绝对值得注意一个单一的、无表达式的分析方法,统称 call (),将被此终端的解决问题者遮盖。该分析方法与Runnable终端的run()分析方法完全相同,只是它离开一个绝对值,并且可以抛出一个已体检的异常。事实上,整个点子是 Callable 只不过是 Runnable,因为这两个终端都以外了一个无论如何被另一个内核执行者的类,只是它均受 Runnable 的上限。

因此,Callable 和 Runnable 的运用于基本上是可以也就是说的,除了我们讲到的状况。运用于 Callable 的应用服务器端不一定与解决问题 Runnable 或 Callable 终端的其他类同时运营。

Future 终端

Future 终端是一个统一标准终端,回应从异步推算离开的绝对值。它绝对值得注意体检推算是否已顺利完成或回头它,检索结果的分析方法。在前面的字符之前,Future 的 get() 分析方法阻塞了调用内核,回头 Callable 顺利完成推算,然后检索结果。该终端还绝对值得注意更改 Callable 执行者的分析方法。但是,一旦推算顺利完成,就不能更改。

在这个终端的一大解决问题之前,Java 8 引入的 CompletableFuture 类使我们能够异步执行者 Runnable 来执行者不离开绝对值的任务,以及离开绝对值的 Supplier 任务。Supplier 是一个函数式终端,它绝对值得注意一个单一的、无表达式的分析方法,统称 get(),并离开一个结果,如 Callable。CompletableFuture 类不具备各种现职机能,可供服务器端员对 Future 终端来进行可用。

结论

Callable 终端是对 Java 并发 API 的一个有趣的多余; 它解决了 Runnable 的弊端。通过 Callable 始创的内核可以离开一个绝对值。这是一个强大的机能,可用作始创一个多内核服务器端,该服务器端可以离开由多个内核同时顺利完成的各种部分或全部顺利完成的推算结果。此外,内核可以离开它们的状态编码,指示其推算的失败或不失败的推算。

云南白癜风
河北白癜风治疗费用多少钱
兰州白癜风医院哪里比较好
广东哪家医院做人流最好
武汉白癜风专业医院
标签:
友情链接: