2013-03-10 79 views
0

多少線程會同時訪問,如果該方法是靜態的同步,也多少線程會同時訪問,如果該方法是靜態的,最後如果方法是同步的實例方法有多少線程會同時訪問?線程同步的方法?

回答

2
  • 使用static只有不會阻止任何線程訪問的方法在任何時候
  • 僅使用​​,所述獲得性顯示器屬於爲其調用方法的對象。您仍然可以在同一類的其他實例上調用相同的方法
  • 使用static synchronized,獲得的監視器屬於class而不是屬於特定對象,這意味着靜態方法只能由一個線程同時調用,無論具體情況如何

後果:請注意,如果其中一個方法是靜態的,那麼多個線程可以同時調用兩個同步方法,這可能是一個陷阱。

+0

這是正確的答案,雖然「後果」可能會多一點明確的闡述:即的原因不止一個線程可以同時執行的是靜態同步只能通過嘗試運行其他靜態方法的其他線程或停止執行反對課堂本身。而同步實例方法僅阻止其他線程針對該特定實例的其他同步方法運行。原因是每個實例都有一個監視器用於類和監視器:同步是針對單個監視器。 – javadba 2013-03-10 16:46:19