public class Loader {
static {
loadFromDB()
}
public static void loadFromDB() {
String db_host = "127.0.0.1"
int db_port 27017;
ObjectStore objectStore = ObjectStore(db_host, db_port);
objectStore.loadDataIntoMap();
}
}
public class Main {
public static void main(String[] args) {
Server server = new Server(host, port);
server.serve();
// I dont want to take db_host and db_port as a command line arguments here
}
}
我知道静态块/初始化器在首次引用时会被执行但是在我的Main类中我不想引用Loader类因为我不想创建一个启动依赖项,我的意思是Main类应该能够自行启动而不依赖于与对象存储的连接是否成功,但是Loader需要在服务器按照说法服务第一个客户端请求之前运行一次。
答案 0 :(得分:0)
静态块是确保在内存中加载类时运行时只运行一次的好方法。 如果要复制该行为,可以使用静态变量。 静态变量也在整个类中共享。应引用单例模式以确保仅将静态变量初始化一次。
模式将是 1.使用静态变量检查初始化是否完成。 2.如果未设置static var,请进入初始化代码。 3.如果需要考虑线程,则使用synchronized块。如果没有,那么可以进行简单的检查。 4.设置静态变量,以便不再运行它。
希望这有帮助。