synchronized (won)
{
if (!won)
won = true;
}
在这里,您有一个暂时的竞争条件,您不会注意到,因为它在第一次执行该
run方法后就消失了。在此之后,
won变量不断指向的相同的实例
Boolean表示
true,其因此适当地用作互斥锁。
这并不是说您应该在实际项目中编写此类代码。应该将所有锁定对象分配给
final变量,以确保它们永远不变。

synchronized (won)
{
if (!won)
won = true;
}
在这里,您有一个暂时的竞争条件,您不会注意到,因为它在第一次执行该
run方法后就消失了。在此之后,
won变量不断指向的相同的实例
Boolean表示
true,其因此适当地用作互斥锁。
这并不是说您应该在实际项目中编写此类代码。应该将所有锁定对象分配给
final变量,以确保它们永远不变。