/*
t1和t2
非同步程式設計模型:t1執行緒執行t1的,t2執行t2的,兩個執行緒之間誰也不等誰
同步程式設計模型:t1和t2執行緒執行,當t1執行緒必須等t2執行緒執行結束,t1才能執行
什麼時候要同步呢?為什麼要引入執行緒同步?
1.為了資料的安全,儘管應用程式使用率降低,但為了保證資料的安全性,必須加入執行緒同步機制
執行緒同步機制使程式變成了(等同)單執行緒
2.什麼條件下要使用執行緒同步?
第一:必須是多執行緒環境
第二:多執行緒環境共享同乙個資料
第三:共享的資料涉及到修改操作
以下程式演示取款例子,以下程式不適用執行緒同步機制,多執行緒同時對乙個
*/public class ****9
}//取款執行緒
class processor implements runnable
public void run()
}//賬戶
class account
public account(string actno,double balance)
//setter and getter
public void setactno(string actno)
public void setbalance(double balance)
public string getactno()
public double getbalance()
//對外提供乙個取款的方法
public void withdraw(double money)
/*以下程式演示取款例子,以下程式使用同步機制保證資料的安全
*/public class ****9
}//取款執行緒
class processor implements runnable
public void run()
}//賬戶
class account
public account(string actno,double balance)
//setter and getter
public void setactno(string actno)
public void setbalance(double balance)
public string getactno()
public double getbalance()
//對外提供乙個取款的方法
//synchronized如果新增到成員方法上,執行緒拿走的也是物件鎖
public void withdraw(double money)catch(interruptedexception e){}
//更新
this.setbalance(after);}}
}
synchronized關鍵字解析
一 修飾方法 1.修飾普通方法 對呼叫此方法的物件加鎖 2.修飾static方法 對呼叫此方法的類的所有物件加鎖 3.不能修飾構造方法,但是可以在構造方法內部修飾 塊 二 修飾 塊 1.synchronized this 相當於修飾普通方法 2.synchronized a.class 相當於修飾s...
解讀synchronized關鍵字
size large 最近在寫多執行緒程式,網上收集總結了synchronized的用法,結果如下 size 1 synchronized關鍵字的作用域有二種 1 是某個物件例項內,synchronized amethod 可以防止多個執行緒同時訪問這個物件的synchronized方法 如果乙個物...
synchronized 關鍵字分析
synchronized是典型的可衝入鎖,jdk1.5之後做了較大的優化 如圖,synchronized可以用在方法上也可以使用在 塊中,其中方法是例項方法和靜態方法分別鎖的是該類的例項物件和該類的物件。而使用在 塊中也可以分為三種,具體的可以看上面的 這裡的需要注意的是 如果鎖的是類物件的話,儘管...