我与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
方法设为私有;
添加一个私有的静态DockerClient
字段;
添加一个公共静态getClient
方法,如果不为null,它将返回DockerClient字段;如果field为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
方法将仅被调用一次。