当前位置: 首页 > 面试题库 >

来自类与线程的Java资源

尹雅健
2023-03-14
问题内容

之间有什么区别

getClass().getResource("some-resource-file.txt")

Thread.currentThread().getContextClassLoader().getResource("some-resource-file.txt")

我在src / test / resources中有资源,我正在尝试从单元测试中访问它们。这是典型的maven样式目录结构。

我期望两者的行为相同。但是事实并非如此。getClass()。getResource()无法获取资源,而从Thread可以获取资源。

那么它们有何不同?


问题答案:

有一种特殊情况使第一个类运行(这就是为什么必须将main()方法声明为静态的,并以字符串数组作为参数的原因)。加载该类并运行该类后,以后将通过类加载器尝试加载类。最简单的是,类加载器创建由字符串名称引用的类主体的平面名称空间。Java中的每个类都使用自己的类加载器来加载其他类。所以,如果ClassA.class引用ClassB.classClassB需要上的类路径ClassLoaderClassA,或者其父母。

线程上下文ClassLoader是一个特殊的上下文,因为它是当前ClassLoader正在运行的线程的当前上下文。这在多类加载器环境中很有用。可以从中的类创建对象ClassLoader C,然后将其传递到拥有的线程ClassLoader D。在这种情况下,Thread.currentThread().getContextClassLoader()如果对象要加载本身不可用的资源,则需要直接使用ClassLoader



 类似资料:
  • 两者之间有什么区别 VS 我在src/test/resources中有资源&我正试图从单元测试中访问它们。这是一种典型的maven风格目录结构。

  • 问题内容: 我对如何使用Toast打印消息感到困惑。我需要使用它来打印来自线程的while循环的消息。我的渲染图形线程与我的活动不在同一个类中。我的意思是,它们不在同一文件中实现。有没有办法做到这一点? 问题答案: 您可以使用runOnUiThread:

  • Java 8的promise实现,即CompletableFuture,提供了应用(…)和get()方法。 其中,在必要时等待promise完成,然后返回其结果。 现在假设我们使用(或)链接一些代码以在UI线程上运行(请参见stackoverflow.com/thenApply和thenApplyAsync之间的差异)。 如果我们在UI线程中调用,比如Java以某种方式处理这种情况,或者它会导致所

  • 问题内容: 看起来我已经搞砸了Java线程/ OS线程和解释性语言。 在开始之前,我确实了解绿色线程是Java线程,其中JVM处理线程,并且整个Java进程仅作为单个OS线程运行。因此,在多处理器系统上是没有用的。 现在我的问题是。我有两个线程A和B。每个线程都有10万行独立代码。我在多处理器系统上的Java程序中运行这些线程。每个线程都将被赋予一个本机OS线程来运行,该线程可以在不同的CPU上运

  • 问:什么是加载资源的正确解决方案(从类路径和/或一般情况下)?Spring文档中提倡使用:http://docs.Spring.io/Spring/docs/current/spring-framework-reference/html/beans.html#context-introduction 问:为什么autowired字段仍然为空?

  • 我的目的是为我的cucumberguice单元测试生成EntityManager和Logger SFL4J实现。 我创建了以下资源生成器 现在,我想我应该使用AbstractModule的实现来绑定这些类,所以:公共类ServiceModule将AbstractModule{@Override protected void configure(){bind(EntityManager.class)