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
は実際に何を確認していますか?私はそのドキュメントを読んだが、それが何であるか理解していない。私がしたいことは、そのメソッドを呼び出すことが安全かどうかをチェックした後にsynchronizedメソッドを呼び出すことです。上記の方法は正しいとは思われません。なぜなら、if
ステートメントが満たされていても、私は致命的なエラーが発生するからです。MonitorEnterの使用:synchronizedメソッドをどのように呼び出す必要がありますか?
[STACKTRACE NO PRINTED!](http://i47.tinypic.com/33pbu36.jpg) –
しかし、hs_err_pid5536.logの内容は何ですか?そして、他のdll呼び出しは問題なく通常通りにやりますか? –
[あなたはこのリンクをチェックすることができます。それは私を助けません](http://suhail03.my3gb.com/hs_err_pid5536.log) –