The publisher provides a stream of data to one or more subscribers. A subscriber uses the subscriber() method to subscribe to a publisher. Each subscriber should only subscribe once to a publisher. Most importantly, the publisher pushes data according to the demand received from subscribers. Reactive streams are lazy; therefore, the publisher will only push an element if there is a subscriber.