为什么 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/