
“嗨,阿米戈!”“在我之前的课程中,我有时会使用‘互斥锁’和‘监控器’这两个词,现在是时候告诉你它们的意思了。”“我洗耳恭听。”“互斥量是一个用于同步线程/进程的特殊对象。它有两种可能的状态:忙碌和空闲。简单来说,互斥量是一个布尔变量,可以有两个值:忙碌(真)和空闲(假)。”“当一个线程想要获得一个对象的所有权时,它将对象的互斥量标记为忙碌。当它完成对对象的处理后,它将其互斥量标记为空闲。”“换句话说,互斥量就像门上的‘忙碌/空闲’标志?”“是的。而且这样的互斥量与 Java 中的每个对象相关联。只有 Java 机器才能直接访问互斥量。它对程序员是隐藏的。”“那我们怎么用呢?”“在 Java 中,我们可以通过监视器使用互斥量。”“监视器是一种特殊的机制(一段代码),位于互斥量之上。它保证与互斥量的正确交互。将对象标记为忙碌是不够的。仍然有必要确保其他线程不会尝试使用忙碌的对象。”“在 Java 中,监视器是使用关键字 synchronized 实现的。”“当您编写同步块时,Java 编译器会用三段代码替换它:”1)在 synchronized 块的开头,添加了将互斥量标记为繁忙的代码。2)在 synchronized 块的末尾,添加了将互斥量标记为空闲的代码。3)在同步块