void Java_Package_Multithreading_againCallReadFile
(JNIEnv *env, jobject obj) {
if((*env)->MonitorEnter(env,obj) == JNI_OK) {
printf("Now you can call the synchronised method !");
} else {
printf("oops ! Failed to acquire the lock.");
}
}
Из приведенного выше метода я хочу проверить, могу ли я вызвать метод, который синхронизирован и может использоваться другим потоком. Что делает MonitorEnter
действительно проверка. Я прочитал его документацию, но не понимаю, что это такое. Что я хочу сделать, вызовите этот синхронизированный метод после проверки безопасного вызова этого метода. Вышеуказанный метод кажется неправильным, потому что даже когда оператор if
выполняется, я получаю фатальную ошибку.Использование MonitorEnter: Как мне вызвать синхронизированный метод?
[NO STACKTRACE GETS PRINTED!] (Http://i47.tinypic.com/33pbu36.jpg) –
Но каково содержание hs_err_pid5536.log? И другие звонки dll делают нормально без проблем? –
[вы можете проверить эту ссылку. Это не помогает мне] (http://suhail03.my3gb.com/hs_err_pid5536.log) –