點擊查看:2015計算機等級考試二級Java入門教程章節(jié)匯總
點擊查看:2015計算機等級考試二級Java入門教程第十一章匯總
11.1 理解線程
許多程序,無論大小,都包含或多或少獨立于其他段的代碼段,如果代碼段可以在時間上并行執(zhí)行效率會更高。線程提供了這種方法。當然,如果像大多數(shù)人一樣,你的計算機只有一個處理器,對任意時刻,你不能執(zhí)行多于一個的計算,但你可以并行地處理輸入/輸出操作。使用線程的另一個原因是在需要連續(xù)運行的程序中允許同時處理程序中其他的活動,例如,在同一個程序中一個連續(xù)運行的動畫與另一個活動并行。在web頁中 Java的小應(yīng)用程序在你的瀏覽器控制下執(zhí)行,線程使多個小應(yīng)用程序可以同時一執(zhí)行。在這種情況下,線程將在瀏覽器控制下運行的程序分成段以便它好及時運行。如果你只有一個處理器,你的操作系統(tǒng)會造成一個錯覺,由于在任意一個給定的時刻只有一個線程可以執(zhí)行指令,但這是一個非常有效的錯覺。為了產(chǎn)生動畫,你可以將繪制一系列靜止畫面的代碼放入一個循環(huán)中:
通常繪制圖像的代碼在計時器的控制一下運行,因此是在一個固定的速率下執(zhí)行,比方說每秒20次。當然,當循環(huán)運行時同一個線程中不會發(fā)生其他的事。如果你想有另一個運行的動畫,它必須在一個獨立的線程中。然后你的操作系統(tǒng)多任務(wù)的能力允許兩個線程分一享有效的處理器時間,因此,允許兩個動畫的運行。在第16章我們將研究如何編寫動畫程序。
讓我們先了解一下線程工作的原理?紤]一個包含三個活動的非常簡單的程序:
從文件中讀出許多數(shù)據(jù)塊。
在每個數(shù)據(jù)塊中執(zhí)行計算。
現(xiàn)在在線程間有不同種的競爭。讀文件和寫結(jié)果都是在競爭,因此需要有種方法當一個線程已在讀取輸入文件時,阻止另一個線程從輸入文件中讀。對輸出文件同理。這個安排有另一個現(xiàn)象與前邊版本不同。如果一個線程(比方說是threadl)讀一個塊(也許是bloclc4 )需要許多時間計算結(jié)果,另一個線程(比方說是thread2 )可以想要讀下一個塊(可能是b1ock5 ),在thread 1為block4寫結(jié)果前,對block5計算和寫結(jié)果。在輸入的不同次序中如果你不想得到這個結(jié)果,你需要做點什么解決這個問題。在我們對確保線程不會沖突進行研究前,讓我們先看看如何創(chuàng)建一個線程。
相關(guān)推薦:
2015計算機等級考試二級Java入門教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |