로컬 및 글로벌 참조
대부분의 JNI 함수는 로컬 참조를 반환합니다. 전역 참조를 생성하려면 (*env)->NewGlobalRef(env, xxx)를 사용하세요.
(*env)->DeleteGlobalRef(env, xxx)는 전역 참조를 삭제합니다.
약한 참조 생성((*env)->NewWeakGlobalRef(env, xxx))
약한 참조가 유효한지 확인: JNI_FALSE == (*env)->IsSampleObject(env, WeakRef, NULL)
스레드 동기화
Java의 객체별 동기화
동기화됨(obj) {
。。。
}
네이티브 코드 구현:
(*env)->MonitorEnter(env, obj);
...
(*env)->MonitorExit(env, obj);
자체 구축된 로컬 스레드는 JNIEnv를 직접 사용할 수 없으며 가상 머신을 연결하여 JNIEnv를 얻는 방식으로 구현할 수 있습니다.
(*jvm)->AttachCurrentThread( jvm, &env, NULL)
JNIEnv를 사용하여 관련 메서드를 호출합니다. . .
(*jvm)->DettachCurrentThread(jvm)