我有一個關於Java中的volatile語句的問題。請看看這個構造例如:Java:足夠易於使類進行線程安全?
class Master {
// Foo is a class with thread-safe methods
public volatile Foo foo;
}
class Worker1 implements Runnable {
protected Master master
void run() { ... };
}
class Worker2 implements Runnable {
protected Master master
void run() { ... };
}
我們有堅持在同一時間運行的類碩士的一個對象的引用2個工作線程。在工作期間,他們都必須訪問master.foo的方法。在某些時候,master的Foo對象將被其中一個工作線程改變。現在我的問題:是否使用volatile使整個構造線程安全?我問這是因爲在Java tutorial from Oracle它說
不過,也有你可以指定動作是原子的:
- 讀取和寫入原子參考變量[...]
原子動作不能交錯,所以可以使用它們而不用擔心線程干擾。
我只是想確保我正確理解這一點。
感謝提前:)
你是什麼意思的'改變'? 1.將創建一個「Foo」的新實例,2.「Foo」的狀態將被修改? – home 2011-12-16 18:28:40
對不清楚的聲明:這是關於改變參考,而不是對象本身。 – tbolender 2011-12-16 18:35:55