如果应用于整个块是否同步
Does synchronized if apply to whole block
这不是方法同步的问题,只是语句同步的问题。请不要错误地标记为重复。
是否是这个代码:
synchronized (this) if (something)
{
somecode();
somemorecode();
}
相当于此代码:
if (something)
{
synchronized (this)
{
somecode();
somemorecode();
}
}
Is this code...equivalent to this code
不,不是。在您的第一个示例中,if
测试 是 可能是 inside 同步部分。在您的第二个示例中,if
在 外部 同步部分。
这是一个语法错误:
synchronized (this) if (something)
{
somecode();
somemorecode();
}
synchronized
需要一个区块,根据JLS§14.19:
SynchronizedStatement:
synchronized
( Expression ) Block
如果有效,它可能等同于:
synchronized (this)
{
if (something)
{
somecode();
somemorecode();
}
}
...但这纯粹是猜测;如果它不是由 JLS 定义的,谁知道它会是什么。 :-)
旁注:它是 synchronized
,而不是 syncronized
或 syncronised
。
这不是方法同步的问题,只是语句同步的问题。请不要错误地标记为重复。
是否是这个代码:
synchronized (this) if (something)
{
somecode();
somemorecode();
}
相当于此代码:
if (something)
{
synchronized (this)
{
somecode();
somemorecode();
}
}
Is this code...equivalent to this code
不,不是。在您的第一个示例中,if
测试 是 可能是 inside 同步部分。在您的第二个示例中,if
在 外部 同步部分。
这是一个语法错误:
synchronized (this) if (something)
{
somecode();
somemorecode();
}
synchronized
需要一个区块,根据JLS§14.19:
SynchronizedStatement:
synchronized
( Expression ) Block
如果有效,它可能等同于:
synchronized (this)
{
if (something)
{
somecode();
somemorecode();
}
}
...但这纯粹是猜测;如果它不是由 JLS 定义的,谁知道它会是什么。 :-)
旁注:它是 synchronized
,而不是 syncronized
或 syncronised
。