its*_*aja 5 java concurrency
当两个线程试图获取同一个对象的锁时,那些被认为决定锁定应该被移交给哪个线程的东西是什么.
Sav*_*era 4
根据notify()的Java文档:
唤醒正在该对象的监视器上等待的单个线程。如果有任何线程正在等待该对象,则选择唤醒其中一个线程。该选择是任意的并且由实现自行决定。线程通过调用 wait 方法之一来等待对象的监视器。
因此,如果您使用,synchronized(obj){}您基本上无法控制哪个线程将获得 上的锁obj,并且您无法做出任何假设。这取决于调度程序。
synchronized(obj){}
obj
如果您想要公平性(即,下一个获取锁的线程是队列中的第一个线程),请查看ReentrantLock:它有一个布尔标志来指定您想要强制公平性。
归档时间:
14 年,3 月 前
查看次数:
489 次
最近记录: