可以同步是一个注释吗?

时间:2012-09-19 15:58:29

标签: java

如果我们没有synchronized关键字而不是@Synchronized注释,那会不会很糟糕?在这种情况下,注释是否会更自然(因为您可以使用非同步方法覆盖synchronized方法 - 因此synchronized对方法本身没有任何说明,而是指定方法之外的其他内容(该方法以某种方式受到保护),所以它不是真正的关键字?)

4 个答案:

答案 0 :(得分:4)

synchronized用于代码块,您无法在代码块中添加注释。

您可以在方法甚至类上使用@synchronized,但Java在首次引入Java时不支持注释。

我认为它非常重要,值得拥有自己的关键字。 ;)

答案 1 :(得分:2)

这很酷但注释不能完全取代synchronized关键字:存在无法用注释标记的同步块。

此外,synchronized块接受用于同步的监视器。它可以动态提供,为我们提供一定的灵活性。注释不允许这样做,因为必须在编译时提供所有参数。

答案 2 :(得分:2)

同步实际上直接转换为字节码级别的monitorenter / monitorexit。并且您指定要同步的内容,您不能使用注释执行此操作:

synchronized (myLock) {
}

因此,对我来说这是一个关键词非常有意义。

答案 3 :(得分:1)

可能作为synchronized的方法版本,是的。但使用synchronized的另一种方法是允许您指定要同步的监视器。

public void someMethod()
{
  synchronized(this)
  {
    //sync code
  }
  //unsynced code.
}