Гарантированность видимости с thenAccept CompletableFuture - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь понять, есть ли какие-либо гарантии видимости, предоставляемые CompletableFuture.

Предположим, у меня есть класс с именем SampleClass, который выглядит примерно так:

public class SampleClass {
    private String member1;
    private String member2;
    // getters, setters and constructor;
}

И я делаю что-то вроде этого:

SampleClass sampleClass = new SampleClass();

CompletableFuture<Void> cf1 = CompletableFuture.supplyAsync(() -> "Hello")
        .thenAccept(sampleClass::setMember1);

CompletableFuture<Void> cf2 = CompletableFuture.supplyAsync(() -> " World")
        .thenAccept(sampleClass::setMember2);

cf1.join();
cf2.join();

// sout(sampleClass);

Теперь я хочу понять, что в выражении sout может быть случай, когда один или оба члена инициализированы / не инициализированы ?

В принципе, есть ли здесь какая-либо гарантия видимости, предоставляемая CompletableFuture? (У меня такое впечатление, что CompletableFuture такая гарантия не предоставляется, и приведенный выше код не работает.)

Я уже прошел этот вопрос , но я думаю, что это не так что мне нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...