मैं एक प्रोग्राम लिख रहा हूं जो एक साधारण सी प्रोग्राम के साथ इंटरफेस करने के लिए जेएनआई का उपयोग करता है।जेएनआई system.out और printf व्यवहार
public static void main(String[] args) {
Hello h = new Hello();
System.out.println("before");
int number = h.sayHello();
System.out.println(number);
System.out.println("after");
}
और
JNIEXPORT int JNICALL Java_Hello_sayHello (JNIEnv *env, jobject obj) {
printf("Hello JNI\n");
return 10;
}
मेरे आश्चर्य करने के लिए
इस कार्यक्रम रिटर्न:: मैं निम्नलिखित प्रोग्राम बनाया है
before
10
after
Hello JNI
मेरे लिए यह बहुत ही अजीब है, क्योंकि यह ग प्रोग्राम है जो स्पष्ट है "पहले" और "बाद" कथन के बीच निष्पादित किया गया है (संख्या 10 मुद्रित है)। लेकिन जब इसे कहा जाता है तो printf कथन निष्पादित क्यों नहीं किया जाता है। क्या यह किसी भी तरह से जेवीएम द्वारा अवरुद्ध है क्योंकि एक ही समय में आउटपुट को लिखने की अनुमति है? क्या इस व्यवहार को सही करने का कोई तरीका है?