首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测Project Loom技术是否缺失或在运行时呈现JVM

检测Project Loom技术是否缺失或在运行时呈现JVM
EN

Stack Overflow用户
提问于 2020-12-17 08:34:52
回答 2查看 123关注 0票数 3

Project Loom现在在Java16的special early-release builds中可用。

如果我要在Project Loom技术所缺乏的Java实现上运行我的基于Loom的应用程序,有没有办法在应用程序启动的早期检测到这一点?

我想写这样的代码:

代码语言:javascript
复制
if( projectLoomIsPresent() )
{
    … proceed …
}
else
{
    System.out.println( "ERROR - Project Loom technology not present." ) ;
}

如何实现projectLoomIsPresent()方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-17 12:58:15

方法1:

代码语言:javascript
复制
return System.getProperty("java.version").contains("loom");

方法二:

代码语言:javascript
复制
try {
    Thread.class.getDeclaredMethod("startVirtualThread", Runnable.class);
    return true;
} catch (NoSuchMethodException e) {
    return false;
}
票数 2
EN

Stack Overflow用户

发布于 2020-12-17 09:07:12

您可以检查Project Loom之前不存在的特征:

代码语言:javascript
复制
import java.util.Arrays;

public static boolean projectLoomIsPresent() {
    return Arrays.stream(Thread.class.getClasses())
        .map(Class::getSimpleName)
        .anyMatch(name -> name.equals("Builder"));
}

不需要捕获异常:

代码语言:javascript
复制
import java.lang.reflect.Method;
import java.util.Arrays;

public static boolean projectLoomIsPresent() {
    return Arrays.stream(Thread.class.getDeclaredMethods())
        .map(Method::getName)
        .anyMatch(name -> name.equals("startVirtualThread"));
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65333111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档