Joa*_*axe 2 java multithreading locking notify
如果您通知锁定并立即再次通知该锁定会发生什么?假设有2个或更多线程在等待该锁.是否可以保证两个线程被唤醒?或者是否可能只唤醒一个线程,这意味着第二个通知已经过时了?
lock.notify();
lock.notify();
Run Code Online (Sandbox Code Playgroud)
谢谢!
假设有2个或更多线程在等待该锁.是否可以保证两个线程被唤醒?
是.每个通知从等待队列中获取一个线程并将其放入阻塞队列 - 唤醒线程必须首先访问synchronized有问题的锁.如果只有一个线程等待锁定,则第二个线程notify()将不执行任何操作.
重要的是要意识到线程不会立即开始执行.因为它必须在一个synchronized块lock中才能够执行wait()它必须lock在它运行之前再次访问它.块队列中可能还有多个其他线程,等待访问lock.