簡體   English   中英

在不同的Java類中使用已經初始化的類,

[英]Using an already initialized class in different java classes,

我是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運行並在包中的其他類usefulValue的值可用,而無需在每個單獨的類中重新加載它?

這些值在內存方面非常易於管理,我正在尋找內存中的解決方案。 我可以將其寫入文件/ db或運行為該應用程序提供服務的套接字服務器,但是問題與Java可以做什么有關。

PS。 usefulValue每天大約變化一次

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因此在整個應用程序或此線程中,其值保持不變。

您可以使用延遲初始化。

    private Integer usefulValue;
    public ExampleClass(){
        // this.usefulValue = slowMethod();
    }

    public int getUsefulValue(){
        if (this.usefulValue == null) {
            this.usefulValue = slowMethod();
        }
        return this.usefulValue;
    }

或用於此目的: 龍目島

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM