java - Java同步函数生成的代码

标签 java synchronization

我真的看不出执行之间的差异

public void foo_fct( Table Tbl, Account act)
{
  synchronized(Tbl) {
    ...
  }
}

还有这个:

public void foo_fct( Table Tbl, Account act)
{
  synchronized(act) {
    ...
  }
}

我的意思是,在幕后,JVM 必须使用 lock() 和unlock() 我猜? 所以无论发生什么(act 或 Tbl)我都会以同样的方式锁定不是?

更新 好的,在您的帮助和 Java 文档下我现在明白了:

“...每个对象都有一个与其关联的内在锁...”

“同步语句...”

最佳答案

是的,这是有区别的,因为您永远不知道哪些其他线程正在 TableAccount 上使用 sychronized

问自己一个问题 - 在 foo_fct 方法中的 sychronized block 执行期间,您是否试图阻止 TableAccount 上的其他可变操作?

关于java - Java同步函数生成的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27945912/

相关文章:

java - 跳转到其他 Activity 的 fragment 中的 ListView

java - MsgPack第三方对象序列化

java.lang.ClassCastException : com. sun.proxy.$Proxy47 无法转换为

synchronization - 与谷歌日历同步事件

Java "in-order"信号量

java - 有什么方法可以在java中锁定(同步)二维数组中的一行?

java - 如何在android中以编程方式设置 Activity 的父 Activity ?

java - cxf 将源文件放在目标中但编译器看不到它们?

go - 取消引用指针的类型断言是 Go 中的内存写入吗?

node.js - 环回 : Embedded Model is not working in offline sync