242. Signaling virtual threads via wait() and notify()
The wait()
, notify()
, and notifyAll()
are three methods defined in the Object
class that allow multiple threads to communicate with each other and coordinate their access to resources without issues.
The wait()
method must be called only by the thread that owns the object’s monitor to force this thread to wait indefinitely until another thread calls notify()
or notifyAll()
on the same object. In other words, the wait()
method must be called in a synchronized
context (instance, block, or static method).
Here is a virtual thread calling the wait()
method:
Object object = new Object();
Thread wThread = Thread.ofVirtual().unstarted(() -> {
synchronized (object) {
try {
logger.info("Before calling wait()");
logger.info(() -> Thread.currentThread() + " | "
+ Thread.currentThread().getState());
object.wait();
logger.info("After calling notify()"...