java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > JDK21无法导入TimeUnit类

JDK21无法导入TimeUnit类的解决办法

作者:lzh_me

这篇文章主要给大家介绍了关于JDK21无法导入TimeUnit类的解决办法,TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),需要的朋友可以参考下

运行环境:windows11、IDEA2023.1.3、JDK21

问题描述:IDEA中无法导入java.util.concurrent.TimeUnit类。

以下截图是问题解决后的截图。有问题的时候未截图,说明一下,有问题的时候TimeUnit类是红色的,无法导入,查看JDK下面的java.util.concurrent包,会发现有这个类,注意的是,这时候这个类是.class文件,点开的话能看到源码,但是会提示"decompiled .class file bytecode version:65.0(Java 21)",意思就是这个类是反编译过来的。注意区分一下下图里面,显示的是java文件,这才是正常的。

解决办法是升级IDEA的版本,升级到2023.1.5后可以正常导入。我是直接通过update升级的,自动升级到1.5,我看官网可以下载的最新版是Version: 2023.2.5。PS:有兴趣的可以去看看BUG修复的日志。

另,如果遇到类似的问题,可以先尝试清空下IDEA缓存,重启IDEA的时候选择“Invalidate and Restart”,一般可以解决项目中有这个类但是import不了的问题。

TimeUnit vs Thread.sleep()

目前我们讨论使用TimeUnit的好处是提高了可读性,但是有时候觉得其他方法更好,因为Thread.sleep()伴随java很早就出现了,几乎所有程序员都知道Thread.sleep(),都知道是将当前线程暂停,而对TimeUnit并不太熟悉。两个原因:一是对比起Thread.sleep(),TimeUnit不是很常用,第二是在它不在Thread类中,就像wait和notify同样不是在Thread中,反正这些需要一段时间才能被采用,并成为一个标准的方式。

总结来说在你想用Thread.sleep()方法的地方你最好使用TimeUnit.sleep()方法来代替。它不尽可以提高代码的可读性而且能更加熟悉java.util.concurrent包,因为TimeUnit在并发编程中也是一个关键API

总结

到此这篇关于JDK21无法导入TimeUnit类解决办法的文章就介绍到这了,更多相关JDK21无法导入TimeUnit类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文