java - 使用监视器输入 : How should i call synchronised method?

标签 java c multithreading java-native-interface

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 语句,我也会得到一个 fatal error 。

最佳答案

"What i want to do is, call that synchronised method after checking if it is safe to call that method."

这没有任何意义。就叫它吧。如果该方法已经同步,则您不会添加任何值。调用“MonitorEnter”根本不会“检查调用该方法是否安全”。它要求锁定您提供的对象。

关于java - 使用监视器输入 : How should i call synchronised method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10547684/

相关文章:

c语言解释,涉及整数计算

java - 线程如何能够访问应该是 block 的同步块(synchronized block)?

java - 如何检测文件已从 br.readline() 循环中删除

java - 在方法内部使用日志来跟踪方法的执行是不好的做法?

objective-c - 一个 unsigned unsigned long 的两倍总是一个 double 吗?

c - 尝试读取文件时出现段错误?

c# - 线程中的 powershell/runspace

c++ - 如何从多个 std::threads 手动发送 QSignal?

java - 只需要帮助启动一个从 c++/c 转移到 mips 的程序

java - Java中使用的Excel数据?