點(diǎn)擊查看:2015計(jì)算機(jī)等級考試二級Java入門教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級考試二級Java入門教程第十一章匯總
11.2 管理線程
在這章的兩個例子中我們看到,線程被啟動,然后競爭計(jì)算機(jī)資源。因?yàn)槿齻€線程對處理器的竟?fàn)幉捎貌皇芸刂频姆椒�,所以線程的輸出次序混亂。在程序中通常這是不希望看到的。在絕大多數(shù)使用線程的例子中,線程執(zhí)行的方法需要被管理才能使線程彼此不產(chǎn)生沖突。
當(dāng)然,在我們的例子中,程序被故意構(gòu)造成通過輸出一個名字中途釋放處理器的控制。
雖然這是非常做作的,但類似情況也會在現(xiàn)實(shí)中出現(xiàn),特別是在重復(fù)操作的線程中出現(xiàn)。能夠認(rèn)識到當(dāng)一個原始語句執(zhí)行時一個線程能被中斷是很重要的。例如:假設(shè)一個線程執(zhí)行語句:
i=i+1
在這個語句仍在執(zhí)行時,線程的執(zhí)行被中斷是極有可能的,也許存i值被取來增1之后,但在結(jié)果被存回i之前。沒有適當(dāng)控制,另一個訪問i的線程會在這一時刻改變i的值:結(jié)果是在這個線程中i沒有增1.
兩個或多個線程分享一個公用資源的地方,如文件或內(nèi)存塊,你需要決策確保一個線程不能修改另一個線程正在使用的資源。當(dāng)一木線程更新文件中的一個記錄時而另一個線程中途檢索同一個記錄是帶來災(zāi)難的方法。管理這種情況的一個方法是使用線程中包含的同步(synchronization)
同步
同步的目標(biāo)是當(dāng)幾個線程想訪問同一個資源時,確保在仟何指定時刻只能有一個線程訪問它。用同步管理你的線程執(zhí)行有兩種方法;
在方法一級管理代碼,包括同步方法
在塊一級管理代碼一使用同步塊
首先我們看看怎么使用同步方法。
相關(guān)推薦:
2015計(jì)算機(jī)等級考試二級Java入門教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |