我正在了解细粒度的 util.concurrency。Java 的实现在哪里Callable
并Future
位于 JVM 中?
我找到了Future 类,它在 Java 语言中描述了高级别的未来,我试图找到它在较低级别上描述的地方。
总而言之,找到 Future 和 Callable 的实际实现会很有趣,例如:处理 Future.get() 或 Callable.call() 并规定它们应该如何工作的 JVM 部分。
期待您的回复,Akonkagva
Java Callable 和 Future 的实现在 JVM 中的什么位置?
Future
接口的主要实现是FutureTask
类。类使用它ExecutorService
来表示提交的作业等。 Callable
(如Runnable
)是您自己实现的简单接口。它包装了您希望ExecutorService
线程池执行的任务。您应该下载这些类的源 jar 并自己查看 Java 代码。
这些类都不包含任何 JVM 黑魔法或任何东西。例如,如果您构建一个Callable
类,除非您将其提交到线程池,否则它不会在另一个线程中运行。您可以Callable
在许多与线程无关的地方使用 。
JVM“黑魔法”主要包含在Future
类中。它具有底层本机支持,可与操作系统线程一起完成在另一个线程中运行任务的实际工作。如果您想看看它的作用,其中仍然有很多 Java 代码,但是有本机和操作系统调用才是真正的魔力。Callable
Thread
这是一个很好的教程,介绍如何使用1.5 中添加到 Java 的执行器服务。
Guava库有自己的: Future
(AbstractFuture
和子类,如SettableFuture
)实现,它是FutureTask
.
如果您有兴趣了解如何实现这些东西,这可能也很有趣。通常番石榴代码写得很好。