2015-12-22 15 views
0

我是Java的新手,正在苦於其中的一些概念。我在Java Tutorial Oracle上看到這樣的說法:「線程主要通過共享字段訪問和對象引用字段引用進行通信。」有人可以向我解釋它是什麼意思的「對象引用字段引用」?什麼是「對象引用」?提前致謝!!努力理解這個概念:線程主要通過共享字段和對象引用字段進行通信參考

+0

請參閱「[使用對象](https://docs.oracle.com/javase/tutorial/java/javaOO/usingobject.html)」。 – Andreas

+0

[什麼是對象引用變量?](http://stackoverflow.com/questions/16504084/what-is-object-reference-variable) – Andreas

回答

1

這裏的the quote

線程通過共享來訪問領域的主要溝通和對象引用字段參考。這種通信形式非常有效,但會產生兩種錯誤:線程干擾和內存一致性錯誤。防止這些錯誤所需的工具是同步。

引用是指向內存中的對象的指針。共享引用意味着屬於一個線程正在執行的對象的引用被複制到另一個線程正在訪問的對象中。

比方說,我們有一個隊列,其中一些線程將東西放入隊列中,其他線程正在從隊列中取出東西。當一個線程將一個對象放入隊列中時,它首先引用該對象的線程(稱爲生產者),然後將其放入隊列後隊列引用該對象。然後,消耗隊列中某些項目的其他線程就會出現並從隊列中取出對象,現在消費者線程正在引用它。所以對象引用會在線程之間傳遞。

本教程討論了爲了使引用可靠地從一個線程傳遞到另一個線程而需要採取的措施。對跨線程可見的對象進行更改的開銷太大,當您想要將更改發佈到另一個線程時,您必須執行特定的操作,例如鎖定或使用volatile關鍵字。

1

一個非常基本的答案是,當一個線程訪問一個對象時,其他線程不應該能夠同時訪問同一個對象,並且他們也不應該能夠訪問這些對象引用。

關於對象引用,如上面鏈接引用What is Object Reference Variable?

引用是用來描述指向對象所在的內存位置的指針。

線程應該在它們之間使用對象和對象引用共享時間,確保避免死鎖對象中的線程永遠不會釋放對象以供其他線程使用。