为什么isAlive()
方法已在Thread.java中声明为native?哪个类实现了这个?我知道本机方法是在Java之外实现的。通过加载相应的库来加载实现它的类。但我很想知道哪个类实现isAlive()
方法?为什么它被宣布为原生?
答案 0 :(得分:3)
为什么isAlive()方法已在Thread.java中声明为原生?
可能是因为必须在本机代码中实现。可能是因为它可以在本机代码中实现更简单。可能出于历史原因;即它被宣布为native
很久以前,并且已经通过这种方式来最大限度地减少因“修复”导致的潜在破坏。
通过在所有平台上查看Thread
的本机代码方法的C ++源代码,您可以获得更多洞察力。但显然,历史实现的源代码不可用。
哪个类实现了这个?
无。它是native
。
我知道本机方法是在Java之外实现的。通过加载相应的库来加载实现它的类。
显然它不是Java类......
但实际上,该库可能链接到核心java
可执行文件而不是动态加载。
但我很想知道哪个类实现了isAlive()方法?
呃......你在谈论C ++课程吗?它将取决于平台。许多本机类在Windows,Linux和Solaris的代码库中都有不同的版本(我猜可能是Mac)。
如果您真的很好奇,我建议您查看OpenJDK Mercurial repos中的代码,或下载源包,然后搜索。不幸的是,OpenJDK项目没有为存储库提供一个方便的基于Web的源代码浏览器。 (所以即使我找到了它,我也无法给你一个稳定的链接。)
为什么它被宣布为原生?
你在重复自己。 (但是Java类没有声明native
。Java方法是......)