在监视器(Monitor)内部,是如何做线程同步的?
监视器(Monitor)内部通过互斥锁(Mutex)和条件变量(Condition Variables)实现线程同步:
- 互斥锁:确保同一时刻仅有一个线程进入监视器保护的临界区。Java 中通过 synchronized 关键字隐式获取和释放锁。
- 条件变量:通过 wait()、notify() 等方法协调线程状态,使线程在特定条件下主动释放锁并等待,避免忙等。
程序应优先选择代码块级别的同步。相较于方法级同步,代码块级同步的锁范围更小,能减少锁竞争概率,提升并发性能;而方法级同步可能因锁范围过大导致不必要的线程阻塞。