What is inter-thread communication in Java

๐Ÿ’ก Concept: Inter-thread communication

Inter-thread communication allows threads to cooperate by waiting and notifying each other for coordinated execution.

๐Ÿ“˜ Quick Intro

Threads use wait(), notify(), and notifyAll() methods on shared objects to communicate and avoid race conditions.

๐Ÿง  Analogy

Think of inter-thread communication like a conversation where one thread waits for a signal to proceed and another thread sends that signal.

๐Ÿ”ง Technical Explanation

  • wait() causes the current thread to wait until notified.
  • notify() wakes up one waiting thread.
  • notifyAll() wakes up all waiting threads.
  • These methods must be called from synchronized context.
  • Used to coordinate threads sharing resources.

๐ŸŽฏ Use Cases

  • โœ… Producer-consumer problem solution.
  • โœ… Thread coordination in multi-threaded apps.
  • โœ… Avoid busy waiting and CPU wastage.

๐Ÿ’ป Inter-thread Communication Example


class Message {
    private String msg;
    public synchronized void send(String m) {
        this.msg = m;
        notify();
    }
    public synchronized void receive() {
        try {
            wait();
            System.out.println("Received: " + msg);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }
}

โ“ Interview Q&A

Q1: What is inter-thread communication?
A: Coordination between threads using wait, notify, notifyAll.

Q2: What does wait() do?
A: Makes the thread wait until notified.

Q3: What is the difference between notify() and notifyAll()?
A: notify() wakes one thread, notifyAll() wakes all.

Q4: Can wait(), notify() be called outside synchronized block?
A: No, causes IllegalMonitorStateException.

Q5: What is producer-consumer problem?
A: Threads producing and consuming shared resources.

Q6: How to avoid busy waiting?
A: Using wait/notify instead of loops.

Q7: What happens if notify() is called with no waiting threads?
A: No effect.

Q8: What exceptions can wait() throw?
A: InterruptedException.

Q9: Can notifyAll() cause performance issues?
A: Yes, waking all threads may cause overhead.

Q10: How to safely use wait/notify?
A: Always inside synchronized blocks.

๐Ÿ“ MCQs

Q1. What is inter-thread communication?

  • Parallel execution
  • Coordination between threads
  • Race condition
  • Deadlock

Q2. What does wait() do?

  • Starts thread
  • Makes thread wait until notified
  • Stops thread
  • Kills thread

Q3. Difference between notify() and notifyAll()?

  • Both wake one
  • notify() wakes one, notifyAll() all
  • Both wake all
  • No difference

Q4. Can wait() be called outside synchronized?

  • Yes
  • No
  • Sometimes
  • Only in Java 9+

Q5. What is producer-consumer problem?

  • Single thread
  • Threads producing and consuming
  • Deadlock
  • Race condition

Q6. How to avoid busy waiting?

  • Using loops
  • Using sleep()
  • Using wait/notify
  • Ignoring

Q7. What happens if notify() called with no waiting threads?

  • Exception
  • No effect
  • Crash
  • Deadlock

Q8. What exceptions can wait() throw?

  • IOException
  • InterruptedException
  • RuntimeException
  • Error

Q9. Can notifyAll() cause performance issues?

  • No
  • Yes
  • Sometimes
  • Never

Q10. How to safely use wait/notify?

  • Outside synchronized
  • Inside synchronized blocks
  • Anywhere
  • Only in static methods

๐Ÿ’ก Bonus Insight

Inter-thread communication is essential for effective thread coordination and resource sharing in Java concurrency.

๐Ÿ“„ PDF Download

Need a handy summary for your notes? Download this topic as a PDF!

๐Ÿ” Navigation

Learn More About Java โ˜•

What is Java and its key features ๐Ÿ‘‰ Explained
Explain the Java Virtual Machine (JVM) ๐Ÿ‘‰ Explained
Difference between JDK, JRE, and JVM ๐Ÿ‘‰ Explained
What are Javaโ€™s main data types ๐Ÿ‘‰ Explained
Explain the concept of Object-Oriented Programming in Java ๐Ÿ‘‰ Explained
What is the difference between a class and an object ๐Ÿ‘‰ Explained
Explain encapsulation with an example ๐Ÿ‘‰ Explained
What is inheritance in Java and its types ๐Ÿ‘‰ Explained
Define polymorphism in Java with examples ๐Ÿ‘‰ Explained
What is abstraction in Java ๐Ÿ‘‰ Explained
Difference between abstract class and interface in Java ๐Ÿ‘‰ Explained
Explain method overloading and method overriding in Java ๐Ÿ‘‰ Explained
What are constructors in Java ๐Ÿ‘‰ Explained
What is the use of the static keyword in Java ๐Ÿ‘‰ Explained
Explain the difference between final, finally, and finalize in Java ๐Ÿ‘‰ Explained
Share:

Tags:


Feedback Modal Popup