我与 Docker 客户端有连接。问题是它每秒运行 2 次(它是一个线程)。每次都建立相同的连接效率很低。
我想运行这个函数来构建一次字符串并将其存储在一个变量中,并且每次需要时都返回该变量,而不是一遍又一遍地重建相同的字符串。我该怎么做?
public class Docker {
public static DockerClient dockerClient() {
DockerClient dockerClient;
try {
Settings settings = Settings.getSettings();
DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
.withDockerHost("tcp://" + settings.getDockerIP() + ":" + settings.getDockerPort())
.withDockerConfig("/home/user/.docker/config.json")
.build();
dockerClient = DockerClientBuilder.getInstance(config).build();
return dockerClient;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
最佳答案
使用 Singleton图案:
- 将您的
dockerClient
方法设为私有(private); - 添加私有(private)静态
DockerClient
字段; 添加一个公共(public)静态
getClient
方法,该方法将在不为 null 时返回 DockerClient 字段,或者在字段为 null 时调用 dockerClient 方法来创建它;public class Docker { private static DockerClient INSTANCE; public static DockerClient getClient() { if (INSTANCE == null) { INSTANCE = dockerClient(); } return INSTANCE; } private static DockerClient dockerClient() { // YOUR IMPLEMENTATION } }
因此您的 dockerClient
方法只会被调用一次。
关于java - 如何让类创建并存储多次使用的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49559724/