Вызовы JNI чередуются с обычными вызовами Java -Каков порядок выполнения?

Недавно я экспериментировал с JNI, чтобы портировать некоторые существующие библиотеки C++.

В рамках тестирования я создал простую программу «helloworld». Я вызываю простую нативную функцию на C++, которая просто печатает сообщения. Мне немного любопытно некоторое поведение, которое я наблюдал при выполнении программы -. Кажется, что все сообщения/ответы нативных функций печатаются после Java System.out.print. Это потому, что собственные вызовы выполняются после вызовов Java, или я должен просто игнорировать это поведение?

public static void main(String[] args) {
        HelloWorld app = new HelloWorld();
        System.out.println("say");
        app.print();

        System.out.println("what");
        app.print();
}

Вывод выглядит следующим образом:

say
what
hola, world !
hola, world !

Собственная функция выглядит следующим образом:

Java_HelloWorld_print(JNIEnv *env, jobject obj) {
    printf("hola, world !\n");
    return;
}
6
задан Perception 28 April 2012 в 06:45
поделиться