public class SerializedSubject<T,R> extends Subject<T ,R>
Subject so that it is safe to call its various
on methods from different threads.
When you use an ordinary Subject as a Subscriber, you must take care not to call its Observer method (or its other on methods) from multiple threads, as this could lead to non-serialized calls, which violates the Observable contract and creates an ambiguity in the resulting Subject.
To protect a Subject from this danger, you can convert it into a SerializedSubject with code like the following:
mySafeSubject = new SerializedSubject( myUnsafeSubject );
Observable.OnSubscribe <T>, Observable.Operator <R,T>, Observable.Transformer <T,R> | Constructor and Description |
|---|
SerializedSubject(Subject
|
| Modifier and Type | Method and Description |
|---|---|
Throwable |
getThrowable()
Deprecated.
this method is scheduled to be removed in the next release
|
T |
getValue()
Deprecated.
this method is scheduled to be removed in the next release
|
Object |
getValues()
Deprecated.
this method is scheduled to be removed in the next release
|
T[] |
getValues(T[] a)
Deprecated.
this method is scheduled to be removed in the next release
|
boolean |
hasCompleted()
Deprecated.
this method is scheduled to be removed in the next release
|
boolean |
hasObservers()
|
boolean |
hasThrowable()
Deprecated.
this method is scheduled to be removed in the next release
|
boolean |
hasValue()
Deprecated.
this method is scheduled to be removed in the next release
|
void |
onCompleted()
Notifies the Observer that the
Observable has finished sending push-based notifications.
|
void |
onError(Throwable
Notifies the Observer that the
Observable has experienced an error condition.
|
void |
onNext(T t)
Provides the Observer with a new item to observe.
|
toSerializedall, amb, amb, amb, amb, amb, amb, amb, amb, amb, ambWith, asObservable, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, cache, cache, cast, collect, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, compose, concat, concat, concat, concat, concat, concat, concat, concat, concat, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatMap, concatMapEager, concatMapEager, concatWith, contains, count, countLong, create, debounce, debounce, debounce, defaultIfEmpty, defer, delay, delay, delay, delay, delaySubscription, delaySubscription, delaySubscription, dematerialize, distinct, distinct, distinctUntilChanged, distinctUntilChanged, doOnCompleted, doOnEach, doOnEach, doOnError, doOnNext, doOnRequest, doOnSubscribe, doOnTerminate, doOnUnsubscribe, elementAt, elementAtOrDefault, empty, error, exists, extend, filter, finallyDo, first, first, firstOrDefault, firstOrDefault, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMapIterable, flatMapIterable, forEach, forEach, forEach, from, from, from, from, from, fromCallable, groupBy, groupBy, groupJoin, ignoreElements, interval, interval, interval, interval, isEmpty, join, just, just, just, just, just, just, just, just, just, just, last, last, lastOrDefault, lastOrDefault, lift, limit, map, materialize, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeWith, nest, never, observeOn, ofType, onBackpressureBlock, onBackpressureBlock, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureDrop, onBackpressureDrop, onBackpressureLatest, onErrorResumeNext, onErrorResumeNext, onErrorReturn, onExceptionResumeNext, publish, publish, range, range, reduce, reduce, repeat, repeat, repeat, repeat, repeatWhen, repeatWhen, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, retry, retry, retry, retryWhen, retryWhen, sample, sample, sample, scan, scan, sequenceEqual, sequenceEqual, serialize, share, single, single, singleOrDefault, singleOrDefault, skip, skip, skip, skipLast, skipLast, skipLast, skipUntil, skipWhile, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, subscribe, subscribe, subscribe, subscribe, subscribe, subscribe, subscribeOn, switchIfEmpty, switchMap, switchOnNext, take, take, take, takeFirst, takeLast, takeLast, takeLast, takeLast, takeLast, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeUntil, takeUntil, takeWhile, throttleFirst, throttleFirst, throttleLast, throttleLast, throttleWithTimeout, throttleWithTimeout, timeInterval, timeInterval, timeout, timeout, timeout, timeout, timeout, timeout, timeout, timeout, timer, timer, timer, timer, timestamp, timestamp, toBlocking, toList, toMap, toMap, toMap, toMultimap, toMultimap, toMultimap, toMultimap, toSingle, toSortedList, toSortedList, toSortedList, toSortedList, unsafeSubscribe, unsubscribeOn, using, using, window, window, window, window, window, window, window, window, window, window, window, window, withLatestFrom, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zipWith, zipWithpublic void onCompleted()
Observer
Observable has finished sending push-based notifications.
The Observable will not call this method if it calls Observer.
public void onError(Throwablee)
Observer
Observable has experienced an error condition.
If the Observable calls this method, it will not thereafter call Observer or Observer.
e - the exception encountered by the Observable
public void onNext(T t)
Observer
The Observable may call this method 0 or more times.
The Observable will not call this method again after it calls either Observer or Observer.
t - the item emitted by the Observable
public boolean hasObservers()
Subject
hasObservers in class
Subject<T,R>
@Experimental @Deprecated public boolean hasCompleted()
The operation is threadsafe.
hasCompleted in class
Subject<T,R>
true if the subject completed normally via
onCompleted
@Experimental @Deprecated public boolean hasThrowable()
The operation is threadsafe.
hasThrowable in class
Subject<T,R>
true if the subject has received a throwable through
onError.
@Experimental @Deprecated public boolean hasValue()
Use the Subject method to retrieve such a value.
Note that unless Subject or Subject returns true, the value retrieved by getValue() may get outdated.
The operation is threadsafe.
@Experimental @Deprecated public ThrowablegetThrowable()
The operation is threadsafe.
getThrowable in class
Subject<T,R>
null if the subject hasn't terminated yet or if it terminated normally.
@Experimental @Deprecated public T getValue()
The method can return null for various reasons. Use Subject, Subject and Subject to determine if such null is a valid value, there was an exception or the Subject terminated without receiving any value.
The operation is threadsafe.
@Experimental @Deprecated public Object[] getValues()
The operation is threadsafe.
@Experimental @Deprecated public T[] getValues(T[] a)
a array or creates a new array if it has not enough capacity.
If the subject's values fit in the specified array with room to spare (i.e., the array has more elements than the list), the element in the array immediately following the end of the subject's values is set to null.
The operation is threadsafe.