gpt4 book ai didi

java - 为什么 Thread 的 isAlive() 方法被声明为 native?

转载 作者:行者123 更新时间:2023-11-29 05:11:23 24 4
gpt4 key购买 nike

为什么 isAlive() 方法在 Thread.java 中被声明为 native?哪个类实现了这个?我知道 native 方法是在 Java 之外实现的。实现它的类是通过加载相应的库来加载的。但是我很想知道哪个类实现了isAlive() 方法?为什么它被宣布为原生?

最佳答案

Why isAlive() method has been declared native in Thread.java?

可能是因为它必须在 native 代码中实现。可能是因为它可以在 native 代码中更简单地实现。可能是出于历史原因;即它在很久以前被声明为native,并且它一直保持这种状态以通过“修复”它来最大程度地减少潜在的破坏。

您可能会通过查看所有平台上 Thread 的 native 代码方法的 C++ 源代码获得更多见解。但很明显,历史实现的源代码是不可用的。

Which class implements this?

没有。它是原生的

I know native methods are implemented outside Java. The class which implement this is loaded by loading the respective library.

显然它不是 Java 类......

但实际上,该库可能链接到核心 java 可执行文件中,而不是动态加载。

But I am curious to know which class implements isAlive() method?

嗯……你说的是 C++ 类吗?它将取决于平台。许多 native 类在 Windows、Linux 和 Solaris(我猜现在可能还有 Mac)的代码库中有不同的版本。

如果您真的很好奇,我建议您从 OpenJDK Mercurial 存储库中查看代码,或者下载源包并进行搜索。不幸的是,OpenJDK 项目没有为存储库提供一个非常方便的基于 Web 的源代码浏览器。 (所以即使我为你找到了它,我也无法给你一个稳定的链接。)

And why it is declared native?

你在重复自己。 (但 Java 类未声明为 native。Java 方法是...)

关于java - 为什么 Thread 的 isAlive() 方法被声明为 native?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28318212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com