diff --git a/rxjava-core/src/main/java/rx/internal/operators/OperatorMulticast.java b/rxjava-core/src/main/java/rx/internal/operators/OperatorMulticast.java index f52b9c56d0..3c96edcb86 100644 --- a/rxjava-core/src/main/java/rx/internal/operators/OperatorMulticast.java +++ b/rxjava-core/src/main/java/rx/internal/operators/OperatorMulticast.java @@ -137,8 +137,13 @@ public void call() { })); // now that everything is hooked up let's subscribe - if (subscription!=null) - source.unsafeSubscribe(subscription); + // as long as the subscription is not null + boolean subscriptionIsNull; + synchronized(guard) { + subscriptionIsNull = subscription == null; + } + if (!subscriptionIsNull) + source.unsafeSubscribe(subscription); } } }