Java 9下Eclipse误将Thread.join(long millis)标记为synchronized的解决方法
解决Eclipse中Java 9 Thread.join(long)被误标为synchronized的问题
先给你吃个定心丸:Java 9里的Thread.join(long millis)确实不是synchronized方法,官方实现是靠内部调用wait(millis)来实现线程等待的,本身并没有synchronized修饰符。你遇到的IDE显示异常,大概率是缓存、配置或者版本兼容问题,试试下面这些办法:
清理IDE缓存并刷新项目
在Eclipse顶部菜单栏点击Project->Clean...,选中你的项目完成清理操作;之后右键项目选择Refresh。很多时候IDE本地的代码解析缓存混乱,清刷一下就能解决这类显示问题。确认项目的JDK版本配置正确
- 右键项目选择
Properties,进入Java Build Path的Libraries标签,检查其中的JDK是否为Java 9版本,若不是则替换为正确的Java 9 JDK。 - 切换到
Java Compiler标签,将Compiler compliance level设置为9,同时勾选Use compliance from execution environment 'JavaSE-9' on the 'Java Build Path',确保编译环境与运行环境一致。
- 右键项目选择
升级Eclipse到兼容Java 9的版本
如果你当前使用的Eclipse版本对Java 9的支持不够完善,也可能出现这类解析错误。建议升级到Eclipse Oxygen.1a及以上版本,这类版本对Java 9的兼容性更好。排查第三方插件的干扰
如果你安装了第三方代码分析、语法高亮类插件,有可能是它们干扰了IDE对方法修饰符的判断。可以暂时禁用这些插件,观察问题是否消失。
要是以上方法都无效,那基本就是IDE的小bug了——放心,官方文档和实际运行的JDK逻辑是正确的,这个显示错误不会影响代码的正常运行,完全可以忽略它。
内容的提问来源于stack exchange,提问作者1 JustOnly 1
相关产品推荐
相关产品推荐

