放慢代码?

当我启动docker时,它会生成日志(基本上是文本)。 我的问题是,它validation如此之快 ,以至于无法捕获日志和frames.size为0. 但是,如果我debugging代码。 它返回大小> 0.所以我猜这是太快,我需要放慢代码。

我怎样才能运行一定的时间? 或开始后执行x的毫秒数?

dockerClient.startContainerCmd(environmentName).exec(); // I need to slow down here I think. List<Frame> frames = DockerLogs.getDockerLogs(dockerClient,container.getId()); //remove after dockerClient.removeContainerCmd(environmentName).exec(); public static List<Frame> getDockerLogs(DockerClient dockerClient,String containerID) throws InterruptedException { List<Frame> frames = new ArrayList<>(); dockerClient.logContainerCmd(containerID) .withStdOut(true) .withTailAll() .exec(new LogContainerResultCallback() { @Override public void onNext(Frame item) { frames.add(item); super.onNext(item); } @Override public void onComplete() { super.onComplete(); } }).awaitCompletion(); return frames; } 

DockerLogs.getDockerLogs()似乎是asynchronous(),所以不pipe你如何推迟,你不会得到预期的结果,也不会延迟本身是一个好主意。 无论你决定使用什么“等待时间”,都会有一个不适应的情况。

相反,尝试遵循docker的asynchronous模式,并提供第二个callback做清理(removeContainerCmd)。 基本上你不知道什么时候会完成,因为对日志的调用立即返回