Многопоточность Java: Реализация важных методов в классе Thread в собственных библиотеках? - PullRequest
0 голосов
/ 29 октября 2018

Я читал класс Thread и обнаружил, что все основные операции многопоточности присутствуют с собственным ключевым словом.

private native void start0();
private native void setPriority0(int newPriority);
private native void stop0(Object o);
private native void suspend0();
private native void resume0();
private native void interrupt0();
private native void setNativeName(String name);

По результатам дополнительных исследований выяснилось, что они реализованы на языке Си. http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/178f954e1fd1/src/share/native/java/lang/Thread.c

Я пытаюсь найти причину этого. Почему Sun / Oracle использовали нативный код для написания таких важных методов? Это связано только с производительностью или уровнем памяти?

1 Ответ

0 голосов
/ 29 октября 2018

Я думаю, что поскольку Java является языком более высокого уровня, чем C, они реализовали метод класса Thread в C. Поскольку многопоточность достигла оптимального уровня, любой должен получить доступ к ОС и процессорам. Чтобы использовать истинный параллелизм ОС для более быстрых приложений на однопроцессорных или многопроцессорных системах, родные языки, такие как C, лучше, чем Java, с точки зрения производительности. Следующие ссылки могут помочь вам понять то же самое.

https://docs.oracle.com/cd/E19455-01/806-3461/6jck06gqe/

https://docs.oracle.com/cd/E19253-01/816-5137/816-5137.pdf

https://docs.oracle.com/cd/E19455-01/806-5257/6je9h032e/index.html

https://docs.oracle.com/cd/E19455-01/806-5257/index.html

...