如果我们有注释而不是synchronized
关键字,那会很糟糕吗?@Synchronized
在这种情况下,注释会更自然吗(因为您可以synchronized
使用非同步方法覆盖方法 - 因此synchronized
对方法本身只字未提,而是在方法之外指定了一些东西(该方法以某种方式受到保护) ,所以它不是真正的关键字?)
问问题
3204 次
4 回答
4
同步用于代码块,您不能向代码块添加注释。
您可以拥有@synchronized
方法甚至类,但在首次引入 Java 时,Java 不支持注解。
我认为它足够重要,值得拥有自己的关键字。;)
于 2012-09-19T16:00:57.243 回答
2
这会很酷,但注解不能完全替代synchronized
关键字:有些同步块不能用注解标记。
此外,同步块接受用于同步的监视器。它可以动态提供,这给了我们一定的灵活性。注释不允许这样做,因为必须在编译时提供所有参数。
于 2012-09-19T16:02:46.210 回答
2
同步转换实际上直接在字节码级别上直接转换为 monitorenter/monitorexit。并且您指定要同步的内容,您不能使用注释来做到这一点:
synchronized (myLock) {
}
因此,它是一个关键字对我来说是完全合理的。
于 2012-09-19T16:11:54.007 回答
1
可能作为同步的方法版本,是的。但是同步的其他用途允许您指定您正在同步的监视器。
public void someMethod()
{
synchronized(this)
{
//sync code
}
//unsynced code.
}
于 2012-09-19T16:01:52.397 回答