我只是想进一步理解这个概念。在显示器上同步
我们有一个监视器,让我们说一个队列或某种地图。该监视器具有放置对象的方法,并可以关闭对象。为了线程安全,监视器将锁定它的put方法并且获取方法。当一个线程与该监视器同步时,它会不断尝试获取此监视器的权限,以便能够继续执行所需的操作。这听起来正确吗?
另一个问题,控制流程如何在这里工作。线程访问监视器后执行哪个代码?我发现很难用打印语句来调试多线程程序,它会变得非常混乱和混乱。
public void run(){
try{
synchronized (monitor){
while (monitor is empty){
monitor.wait(); // Does this line pause the thread or the monitor?
}
System.out.println("Done Waiting");
}
System.out.println("Out of the synchronized block");
}
}
不要这样想。监视器没有方法或字段或任何东西。监视器不是你可以与之交互的东西。你与对象交互。对象有监视器。 –