java - 如何让类创建并存储多次使用的字符串?

标签 java

我与 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/

相关文章:

java - 需要大数据文件的 Android 应用程序

java - 为 Java 和 .NET 实现单一数据访问层

java - 为什么 MySQL 没有连接到我在 Android Studio 中的应用程序?

java - Gradle 与 Maven 时区

java - Libgdx Scene2d 表和滚动 Pane 错误?

java - 如何在android中插入%20代替空格

java - JSON 值中的空格

java - 当集合设置时如何测试 json api

java - 如何使用 replaceAll 删除部分文本

java - 从 Java 和 Python 调用 native 库时如何释放内存?