在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中解决这个问题?
答案 0 :(得分:0)
Eclipse和IntelliJ向您展示实际代码,因此通过定义是正确的。显而易见的不匹配是因为Javadoc没有显示方法是否为synchronized
。
这是一个刻意的设计决定;见bug report。引用:
开发人员必须知道它对多线程是否安全 同时对一个对象进行操作,但是,这种同步可以 在公共方法或私有方法以及Java Platform API中完成 spec不应声明一个优先于另一个。被许可人应该 如果愿意,可以在内部实现同步。
因此,类的一般描述应该提到该类是否是线程安全的。作为例外的单个方法描述应该提到它们是例外。
TL; DR是synchronized
是实现细节,不是方法契约的一部分。所以Javadoc没有展示它。