2.x: reduce blockingX overhead, move internal observers to common pkg #4491
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR compacts the
blockingX
operators by extendingCountDownLatch
and implementingSingleObserver
,CompletableObserver
andMaybeObserver
with the necessary blocking await mechanics.Benchmark comparison (i7 4770, Windows 7 x64, Java 8u102):
In addition, the internal package
subscribers.single
andsubscribers.completable
has been removed and the classes moved intoio.reactivex.internal.observers
package. The old blocking enum helpers were removed as well.The
BlockingSingleSubscriber
andBlockingSingleObserver
abstract classes have been renamed toBlockingBaseX
to avoid name confusion (they have nothing to do with theSingle
type).