在不同的java类中使用已经初始化的类,

我是 Java 新手,正在构建一个 springboot 应用程序,其中不同的类需要来自同一来源的数据。源是几个文件,但重要的是要花费一些时间才能将数据导出;获取所有数据与获取不同类需要的每个部分一样快,因此对函数进行分区无济于事。


因此,我想要一个初始化一次的类,获取所有数据,然后为需要数据的类提供服务。理想情况下,它仅在请求时才初始化,然后数据将保存在实例中。


假设我有这门课:


package myapp;

import java.util.concurrent.TimeUnit;

import java.lang.InterruptedException;


public class ExampleClass {

    private int usefulValue;


    public ExampleClass(){

        this.usefulValue = slowMethod();

    }


    private int slowMethod(){ //just an example of something that takes time

        int usefulValue;

        try {

            TimeUnit.SECONDS.sleep(500);

        } catch (InterruptedException e){

            ;

        }

        usefulValue = 15;

        return usefulValue;


    }

    public int getUsefulValue(){

        return this.usefulValue;

    }

}

我怎样才能usefulValue让它运行并可供包中的其他类使用而无需在每个单独的类中重新加载它?


这些值在内存方面非常易于管理,我正在专门寻找内存解决方案;我可以将它写入文件/数据库或运行一个为应用程序提供服务的套接字服务器,但问题与在 Java 中可以做什么有关。


附言。usefulValue大约每天变化一次


偶然的你
浏览 137回答 2
2回答

德玛西亚99

package myapp;import java.util.concurrent.TimeUnit;import java.lang.InterruptedException;public class ExampleClass {public static int usefulValue;public ExampleClass(){    ExampleClass.usefulValue = slowMethod();}private int slowMethod(){ //just an example of something that takes time    int usefulValue;    try {        TimeUnit.SECONDS.sleep(500);    } catch (InterruptedException e){        ;    }    usefulValue = 15;    return usefulValue;}public int getUsefulValue(){    return ExampleClass.usefulValue;}}同样在任何其他类中,您可以像这样使用它的值,ExampleClass.usefulValue因此它的值在整个应用程序中或在此线程中保持不变。

MMTTMM

您可以使用延迟初始化。    private Integer usefulValue;    public ExampleClass(){        // this.usefulValue = slowMethod();    }    public int getUsefulValue(){        if (this.usefulValue == null) {            this.usefulValue = slowMethod();        }        return this.usefulValue;    }或用于此:lombok
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java