2013-05-09 59 views
4

爲什麼Object類有線程相關的方法,如wait(),notify(), notifyAll()爲什麼Object類有Thread方法?

我們需要擴展Thread或者執行Runnable來爲類提供線程行爲。那麼他們爲什麼不把它們作爲ThreadRunnable對象的一部分呢?

+0

這個問題並非真正由一小部分人承擔責任。原因在於某個地方出於某種原因某個地方的某個人決定讓每個對象成爲條件變量。 – millimoose 2013-05-09 08:00:45

回答

0

如果線程已鎖定對象實例,則在該對象實例上調用notify將喚醒這些線程。因此,由於鎖是對象實例,因此與該鎖有關的操作屬於對象實例。

4

Java併發模型使用鎖來在多線程環境中實現對對象的互斥訪問,並且鎖與Java中的每個對象(類型'Object')相關聯,而不僅與線程相關聯。

1)Wait和notify是Java中兩個線程之間的通信機制。而Object類是正確的地方,使它們可用於每個對象,因爲它是所有對象的超類。

2)鎖是可用的每個對象的基礎上,這是另一個原因等待和通知在Object類而不是Thread類中聲明。

+0

爲什麼dint java爲這個功能提供了一個接口?爲什麼它必須是Object類,並且在可能存在所有執行都在單個線程中完成的情況下強制所有對象都具有此功能 – MozenRath 2014-01-01 21:16:07

相關問題