用notifyAll()方法就好,无需使用notify()方法了?

    技术2023-04-12  97

    notifyAll()方法和notify()方法二者实现的目的是相同的,就是唤醒线程,区别是notifyAll()方法是全部唤醒,而notify()方法则是随机唤醒一个,这样一看好像直接用notifyAll()方法就好了,何必要使用notify()方法,这里其实要考虑到系统开销,当业务逻辑只需要确保有线程被唤醒就好,那么就建议使用notify()方法,因为一旦线程被唤醒,该线程就会从等待队列移动到阻塞队列,相比起notifyAll()方法将全部线程都移动到阻塞队列,notify()方法的随机移动一个线程到阻塞队列,系统开销无疑是更小的,特别是当等待的线程越多时,差距就会体现的更明显。

    Processed: 0.013, SQL: 9