上述的4段同步代碼,使用同一個(gè)同步鎖lock1。所有調(diào)用4段代碼中任何一段代碼的線程,都需要競(jìng)爭(zhēng)同一個(gè)同步鎖lock1。 我們仔細(xì)分析一下,發(fā)現(xiàn)這是沒有必要的。 因?yàn)閒1()的代碼段A和f2()的代碼段B訪問的共享資源是resource1,f3()的代碼段C和f4()的代碼段D訪問的共享資源是 resource2,它們沒有必要都競(jìng)爭(zhēng)同一個(gè)同步鎖lock1。我們可以增加一個(gè)同步鎖lock2。f3()和f4()的代碼可以修改為: public static final Object lock2 = new Object();