Почему isAlive()
был объявлен native в Thread.java? Какой класс это реализует? Я знаю, что собственные методы реализованы вне Java. Класс, который реализует это, загружается загрузкой соответствующей библиотеки. Но мне любопытно узнать, какой класс реализует isAlive()
? И почему он объявлен родным?
Почему метод isAlive() был объявлен native в Thread.java?
Возможно, потому что он должен быть реализован в собственном коде. Возможно потому, что он может быть проще реализован в собственном коде. Возможно, по историческим причинам; т.е. было объявлено, что оно было native
давным-давно, и оно было оставлено таким образом, чтобы свести к минимуму потенциальное нарушение, вызванное его "фиксацией".
Вы можете получить больше информации, посмотрев исходный код C++ для собственных методов кода для Thread
, на всех платформах. Но, очевидно, исходный код исторических реализаций недоступен.
Какой класс это реализует?
Никто. Это native
.
Я знаю, что собственные методы реализованы вне Java. Класс, который реализует это, загружается загрузкой соответствующей библиотеки.
Очевидно, что это не класс Java...
Но на самом деле библиотека, вероятно, связана с основным исполняемым файлом java
а не с динамической загрузкой.
Но мне любопытно узнать, какой класс реализует метод isAlive()?
Эммм... ты говоришь о классе C++? Это зависит от платформы. Многие из родных классов имеют разные версии в базе кода для Windows, Linux и Solaris (и, возможно, Mac сейчас, я думаю).
Если вам действительно интересно, я предлагаю вам проверить код из репозитория OpenJDK Mercurial или загрузить исходные пакеты и выполнить поиск. К сожалению, проект OpenJDK не обеспечивает удобный удобный веб-браузер исходного кода для репозитория. (Так что, даже если бы я нашел его для вас, я не смог бы дать вам стабильную ссылку на него.)
И почему он объявлен родным?
Вы повторяетесь. (Но Java-классы не объявлены native
. Java-методы...)