我真的看不出执行之间的差异
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 文档下我现在明白了:
“...每个对象都有一个与其关联的内在锁...”
和“同步语句...”
最佳答案
是的,这是有区别的,因为您永远不知道哪些其他线程正在 Table
或 Account
上使用 sychronized
。
问自己一个问题 - 在 foo_fct
方法中的 sychronized
block 执行期间,您是否试图阻止 Table
或 Account
上的其他可变操作?
关于java - Java同步函数生成的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27945912/