Я пытаюсь понять, есть ли какие-либо гарантии видимости, предоставляемые 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
такая гарантия не предоставляется, и приведенный выше код не работает.)
Я уже прошел этот вопрос , но я думаю, что это не так что мне нужно.