使用Synchronized塊同步方法
nchronized關(guān)鍵字有兩種用法。第一種就是在《使用Synchronized關(guān)鍵字同步類方法》一文中所介紹的直接用在方法的定義中。另外一種就是synchronized塊。我們不僅可以通過synchronized塊來(lái)同步一個(gè)對(duì)象變量。也可以使用synchronized塊來(lái)同步類中的靜態(tài)方法和非靜態(tài)方法。
synchronized塊的語(yǔ)法如下public void method()
2.{
3. … …
4. synchronized(表達(dá)式)
5. {
6. … …
7. }
8.}
一、非靜態(tài)類方法的同步
從《使用Synchronized關(guān)鍵字同步類方法》一文中我們知道使用synchronized關(guān)鍵字來(lái)定義方法就會(huì)鎖定類中所有使用synchronzied關(guān)鍵字定義的靜態(tài)方法或非靜態(tài)方法,但這并不好理解。而如果使用synchronized塊來(lái)達(dá)到同樣的效果,就不難理解為什么會(huì)產(chǎn)生這種效果了。如果想使用synchronized塊來(lái)鎖定類中所有的同步非靜態(tài)方法,需要使用this做為synchronized塊的參數(shù)傳入synchronized塊國(guó),代碼如下
通過synchronized塊同步非靜態(tài)方法
9.public class SyncBlock
10. {
11. public void method1()
12. {
13. synchronized(this) // 相當(dāng)于對(duì)method1方法使用synchronized關(guān)鍵字
14. {
15. … …
16. }
17. }
18. public void method2()
19. {
20. synchronized(this) // 相當(dāng)于對(duì)method2方法使用synchronized關(guān)鍵字
21. {
22. … …
23. }
24. }
25. public synchronized void method3()
26. {
27. … …
28. }
29. }
相關(guān)推薦:
2012年下半年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間及入口匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |