小编Tas*_*isi的帖子

作者使用 thenCompose 而不是 thenComposeAsync 的原因是否正确

这个问题不同于这个Java8 thenCompose and thenComposeAsync之间的区别,因为我想知道作者使用thenCompose而不是的原因是什么thenComposeAsync

我正在阅读《现代 Java 实战》,在第 405 页上遇到了这部分代码:

public static List<String> findPrices(String product) {
    ExecutorService executor = Executors.newFixedThreadPool(10);
    List<Shop> shops = Arrays.asList(new Shop(), new Shop());
    List<CompletableFuture<String>> priceFutures = shops.stream()
            .map(shop -> CompletableFuture.supplyAsync(() -> shop.getPrice(product), executor))
            .map(future -> future.thenApply(Quote::parse))
            .map(future -> future.thenCompose(quote ->
                    CompletableFuture.supplyAsync(() -> Discount.applyDiscount(quote), executor)))
            .collect(toList());
    return priceFutures.stream()
            .map(CompletableFuture::join).collect(toList());
}
Run Code Online (Sandbox Code Playgroud)

一切正常,我可以理解这段代码,但这是作者为什么没有thenComposeAsync在第 408 页使用的原因,我无法理解:

通常,名称中没有 Async 后缀的方法在与前一个任务相同的线程中执行其任务,而以 Async 终止的方法总是将后续任务提交到线程池,因此每个任务都可以由不同的线程处理线。在这种情况下,第二个 CompletableFuture 的结果取决于第一个,因此无论您使用此方法的一个或另一个变体组合两个 CompletableFuture,对最终结果或其粗略计时都没有影响

根据我对thenCompose( 和thenComposeAsync) 签名的理解,如下所示:

public <U> …
Run Code Online (Sandbox Code Playgroud)

java java-8 completable-future

8
推荐指数
1
解决办法
543
查看次数

Docker 中的用户是什么概念,权限是如何工作的?

我无法理解 Docker 中用户的概念。

这些是我的问题:

  1. 每个 Docker 容器都有自己的用户和组还是 Docker 容器使用主机用户管理?

  2. --user我们传递给docker run命令的参数是什么?

  3. Docker 容器或 Docker 守护进程是否可以在主机操作系统上创建用户?

  4. Docker 卷中的所有权和文件权限如何工作?

对于第四个问题,假设我有以下卷:

--volume /var/run/docker.sock:/var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

并且主机操作系统中的lsid命令的结果如下:

root@tashkhisi:/var/run# ls -l docker.sock
srw------- 1 root docker 0 Jul 30 18:44 docker.sock

root@novinhost:/var/run# id -u  root
0
Run Code Online (Sandbox Code Playgroud)

这是否意味着我只能从 Docker 容器内使用 Docker 容器内 id 为 0 的用户访问该文件?
我的意思是容器看到该文件具有原始文件权限但有自己的用户?

请不要注意/var/run/docker.sock我只想知道权限如何工作的文件。
我只是使用它,因为它是一个常见的用例。

docker

6
推荐指数
2
解决办法
1566
查看次数

标签 统计

completable-future ×1

docker ×1

java ×1

java-8 ×1