Java.Multithreading.What is the use of the volatile, synchronized, transient, native keyword?

🔁 volatile — Visibility in Concurrency

Purpose: Ensures that changes to a variable are always visible to all threads.

Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.What is the use of the volatile, synchronized, transient, native keyword?

Java.Multithreading.On which object does synchronization occur when calling a static synchronized method?

When you declare a static synchronized method in Java, synchronization happens on the Class object, not on an instance of the class.

Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.On which object does synchronization occur when calling a static synchronized method?

Java.Multithreading.How can I check if a thread holds the monitor of a specific resource?

In Java, there’s no direct API like Thread.holdsMonitor(Object obj) — but there are a few ways to indirectly check or debug whether a thread holds a monitor on a specific object.

Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.How can I check if a thread holds the monitor of a specific resource?

Java.Multithreading.What is a livelock?

A livelock is similar to a deadlock, but with a twist:

Threads keep changing their state in response to each other, but make no real progress.

They’re not blocked (like in a deadlock), but they’re too polite — constantly reacting to each other, leading to an endless loop of “after you, no, after you…”

Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.What is a livelock?

Java.Multithreading.Deadlock

A deadlock is a situation in multithreaded programming where two or more threads are blocked forever, each waiting for the other to release a lock.

It’s like two people trying to pass each other in a narrow hallway:

  • Person A won’t move until Person B moves,
  • and Person B won’t move until Person A moves.
    → So neither moves – and that’s deadlock.
Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.Deadlock

Java.Multithreading.How does Thread.join() work?

Thread.join() in Java is a method that allows one thread to wait for the completion of another thread before continuing its execution. It’s a synchronization mechanism that ensures a thread finishes before the calling thread proceeds.

Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.How does Thread.join() work?

Java.Multithreading.Why are wait() and notify() methods called only in a synchronized block?

Let’s dive into this with clarity and depth:

❓ Why are wait(), notify(), and notifyAll() allowed only inside a synchronized block or method?

Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.Why are wait() and notify() methods called only in a synchronized block?

Java.Multithreading.What is the difference between notify() and notifyAll()?

🔔 notify() vs notifyAll() — Core Idea

notify()

  • Wakes up one random thread that’s waiting on the same object’s monitor (lock).
  • It’s not guaranteed which thread will be woken if multiple are waiting.
  • Only one continues; the others remain waiting.

notifyAll()

  • Wakes up all threads that are waiting on the object’s monitor.
  • But remember: only one of them can acquire the lock and proceed.
  • The rest go back to waiting until it’s their turn.
Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.What is the difference between notify() and notifyAll()?

Java.Multithreading.How do wait() and notify()/notifyAll() methods work?

🔁 wait(), notify(), notifyAll() — Overview

These methods are used for thread communication: they allow threads to coordinate and cooperate by pausing and resuming execution based on certain conditions.

They are methods of java.lang.Object, not Thread — because every object in Java can act as a monitor (mutex/lock).

Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.How do wait() and notify()/notifyAll() methods work?

Java.Multithreading.Why might a private mutex be needed?

A private mutex (or private lock object) is often used to gain fine-grained control over synchronization without exposing the locking mechanism to the outside world.

Here are the key reasons you might want to use a private mutex instead of synchronized(this) or synchronized(SomeClass.class):

Continue reading →
Posted in Без рубрики | Comments Off on Java.Multithreading.Why might a private mutex be needed?