2016-09-14 3 views
2

Ich fragte mich, welche Konsequenzen waren SubscribeOn() auf ein Thema zu nennen waren.Unter Verwendung von subscribeOn() mit einem Betreff

Ich verstehe, dass (standardmäßig) dies nicht ändern wird, was Thread-Elemente auf emittiert werden, bin ich nur neugierig, wenn es einige andere negative Nebenwirkungen verursachen könnte.

In der Regel, ruft subscribe() auf die gleiche Observable aus verschiedenen Threads unsafe? Wenn ja, macht subscribeOn() das irgendwie sicher?

Antwort

1

Aufruf von subscribe() auf demselben Subject aus verschiedenen Threads ist sicher (beachten Sie, dass Aufruf von subject.doOnXXX von verschiedenen Threads Synchronisation benötigt, fragen Sie nach Klärung, wenn Sie es brauchen). Verallgemeinern, dass es für alle Observables nicht möglich ist, weil es einfach genug ist, ein solches zu erstellen, das nicht Thread-sicher ist (etwa bei Sichtbarkeitsproblemen). Sie sind richtig, dass Sie einen nicht-Thread-sichere beobachtbare Thread-sicher machen könnte durch

.subscribeOn(Schedulers.from(Executors.newSingleThreadExecutor())) 

mit einem Scheduler mit mehr als einem Thread verwenden Sie nicht die Sicherheit in Bezug auf die Gewinde schützen.

Verwandte Themen