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