我只是想進一步理解這個概念。在顯示器上同步
我們有一個監視器,讓我們說一個隊列或某種地圖。該監視器具有放置對象的方法,並可以關閉對象。爲了線程安全,監視器將鎖定它的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");
}
}
不要這樣想。監視器沒有方法或字段或任何東西。監視器不是你可以與之交互的東西。你與對象交互。對象有監視器。 –