<P> One of the most important distinctions among message passing systems is whether they use synchronous or asynchronous message passing . Synchronous message passing occurs between objects that are running at the same time . With asynchronous message passing it is possible for the receiving object to be busy or not running when the requesting object sends the message . </P> <P> Synchronous message passing is what typical object - oriented programming languages such as Java and Smalltalk use . Asynchronous message passing requires additional capabilities for storing and retransmitting data for systems that may not run concurrently . </P> <P> The advantage to synchronous message passing is that it is conceptually less complex . Synchronous message passing is analogous to a function call in which the message sender is the function caller and the message receiver is the called function . Function calling is easy and familiar . Just as the function caller stops until the called function completes, the sending process stops until the receiving process completes . This alone makes synchronous message unworkable for some applications . For example, if synchronous message passing would be used exclusively, large, distributed systems generally would not perform well enough to be usable . Such large, distributed systems may need to continue to operate while some of their subsystems are down; subsystems may need to go offline for some kind of maintenance, or have times when subsystems are not open to receiving input from other systems . </P> <P> Imagine a busy business office having 100 desktop computers that send emails to each other using synchronous message passing exclusively . Because the office system does not use asynchronous message passing, one worker turning off their computer can cause the other 99 computers to freeze until the worker turns their computer back on to process a single email . </P>

What is message passing in oops with example