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