Eclipse和Intellij显示错误的java方法声明。我该如何解决?

时间:2018-03-05 19:13:19

标签: eclipse intellij-idea

在java中,Thread.join(long millis)方法不是同步方法。你也可以从这个链接看到这个方法声明:https://docs.oracle.com/javase/9/docs/api/java/lang/Thread.html#join-long-但是eclipse和idea将这个方法显示为synchronized。你可以看看下面的图片我想要的意思。顺便说一下,我在eclipse中使用java 9 我怎么能在eclipse中解决这个问题?

enter image description here

1 个答案:

答案 0 :(得分:0)

Eclipse和IntelliJ向您展示实际代码,因此通过定义是正确的。显而易见的不匹配是因为Javadoc没有显示方法是否为synchronized

这是一个刻意的设计决定;见bug report。引用:

  

开发人员必须知道它对多线程是否安全   同时对一个对象进行操作,但是,这种同步可以   在公共方法或私有方法以及Java Platform API中完成   spec不应声明一个优先于另一个。被许可人应该   如果愿意,可以在内部实现同步。

     

因此,类的一般描述应该提到该类是否是线程安全的。作为例外的单个方法描述应该提到它们是例外。

TL; DR是synchronized是实现细节,不是方法契约的一部分。所以Javadoc没有展示它。