我与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方法将仅被调用一次。

10-05 19:33