[英]non abstract methods of abstract class thread safe
我有一個帶有非抽象方法的抽象類。 我想知道這些非抽象方法默認情況下是否是線程安全的嗎?
為了使問題更清楚,這里有一個例子
public abstract Class Animal {
private List foo;
non abstract method survive() {
//bla bla bla
foo++;
foo = foo * 2
foo = nul
//bla bla bla
}
abstract method eat();
abstract method sleep();
}
public class Cat extends Animal {
eat();
sleep();
}
public class Dog extends Animal {
eat();
sleep();
}
//etc etc
如果貓和狗都希望同時生存,那么Java是否會默認照顧它? 還是應該使Animal.survive()方法同步?
就並發訪問而言,抽象類方法沒有任何特殊之處。 如果您以非抽象方法處理靜態資源,則應使其同步以避免任何並發訪問問題。
如果類A擴展了類B,則類B的所有對象都可以使用A中的公共和非抽象方法。顯然,您可以在B中重寫此函數,但是如果您不這樣做,那么就不會有問題使用A中的(公共,非抽象)函數
方法前面的A中的單詞抽象意味着必須在子類中覆蓋它。
好吧,根本沒有問題,因為Dog和Cat是獨立的對象->沒有同步問題...
“編寫線程安全代碼的核心是管理對狀態的訪問,尤其是對共享的可變狀態的訪問。” -Java並發實踐-
foo狀態非常重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.