1

我的问题是:假设我有以下几行:

Person p, q;
p.go(q.getAddress());

现在,函数 go() 和 getAdress() 是同步的。假设函数 getAddress() 将需要一些时间才能返回,在那个时候,go() 函数会被锁定吗?含义:p 会得到 go() 函数同步的“密钥”吗?谢谢!

4

1 回答 1

0

附注:作为一种语言功能,synchronized可以让您认为您锁定了部分代码。您应该抵制这种诱惑:您不是锁定代码,而是保护您的数据,以确保某些不变量在任何地方都是正确的,除了您暂时破坏它们的某些部分。

现在让我们看看计算表达式时会发生什么:

q.getAddress entered
q.getAddress returns
p.go entered
p.go returns

两个“同步”都不会发生在另一个中,并且在两个同步之间都有一个窗口,在这个窗口中,两个同步都不能保护任何东西。那是你想知道的吗?q.getAddressp.go

于 2013-02-10T17:28:32.017 回答