【发布时间】:2017-05-01 14:13:53
【问题描述】:
我在阅读 java 中的同步概念时遇到了同步语句。
我想知道,为什么我们要传递参数给它,虽然它看起来像静态块(这只是一个例子),并且传递的参数没有指定任何数据类型。
例子:
public class MsLunch {
private long c1 = 0;
private long c2 = 0;
private Object lock1 = new Object();
private Object lock2 = new Object();
public void inc1() {
synchronized(lock1) {
c1++;
}
}
public void inc2() {
synchronized(lock2) {
c2++;
}
}
}
如果有人知道,请解释一下。
【问题讨论】:
-
因为你需要说出你要锁定什么对象。
-
你是说
lock1和lock2被通过了吗?这些是正在同步的对象。 -
@SidhantBansal 查找任何解释
synchronized的教程。它应该深入地覆盖锁。 -
从技术上讲,这是正确的。 JLS 并未将其称为论据。 (而
synchronized(lock1)不是方法调用……就像while(true)是方法调用一样。)
标签: java synchronize