線程是Java學(xué)習(xí)中的一個重點(diǎn),、難點(diǎn)了,小編今天和大家分享怎么樣學(xué)Java線程即簡單又能理解深刻,。 Java線程的知識結(jié)構(gòu)圖 基本概念進(jìn)程:程序的執(zhí)行過程。持有資源(共享內(nèi)存,、共享文件)和線程,。 線程: - 是一個程序內(nèi)部的順序控制流。 - 它包含在進(jìn)程之中,,是系統(tǒng)中最小執(zhí)行單元,,同一個進(jìn)程可以有多個線程。 - 線程共享進(jìn)程的資源,。 線程和進(jìn)程對比: - 每個進(jìn)程都有獨(dú)立的代碼和數(shù)據(jù)空間(進(jìn)程上下文),,進(jìn)程切換的開銷大。 - 線程:輕量的進(jìn)程,,同一類線程共享代碼和數(shù)據(jù)空間,,每個線程有獨(dú)立的運(yùn)行棧和程序計數(shù)器(PC),線程切換的開銷小,。 多進(jìn)程:在操作系統(tǒng)中,,能同時運(yùn)行多個任務(wù)(程序)。 多線程:在同一應(yīng)用程序中,,有多個順序流同時執(zhí)行,。 線程的交互: 通過Thread類創(chuàng)建線程Thread類 直接繼承了Object類,,并實現(xiàn)了Runnable接口,。位于java.lang包中。 封裝了線程對象需要的屬性和方法 繼承Thread類——創(chuàng)建多線程的方法之一 - 繼承Thread類(從Thread類派生一個子類,,并創(chuàng)建子類的對象) - 子類應(yīng)該重寫Thread類的run方法,,寫入需要在新線程中執(zhí)行的語句段 - 調(diào)用start方法來啟動新線程,自動進(jìn)入run方法 執(zhí)行結(jié)果: 主線程開啟 主線程結(jié)束 新線程開啟 10:3628800 新線程結(jié)束 結(jié)果說明: (1)main線程已經(jīng)執(zhí)行完后,新線程才開始執(zhí)行完 (2)main方法調(diào)用thread.start()方法啟動新線程后并不等待其run方法返回就繼續(xù)運(yùn)行,,線程的run方法在一邊獨(dú)自運(yùn)行,,不影響原來的main方法的運(yùn)行 線程的休眠線程休眠的原因就是要讓其他線程得到執(zhí)行的機(jī)會。 如果啟動新線程后希望主線程多持續(xù)一會再結(jié)束,可在start語句后加上讓當(dāng)前線程(這里當(dāng)然是main)休眠1毫秒的語句,。 執(zhí)行結(jié)果: 主線程開啟 新線程開啟 10:3628800 新線程結(jié)束 主線程結(jié)束 案例2:開啟三個線程,每個線程休眠0~6毫秒 執(zhí)行結(jié)果: 開啟線程 主線程結(jié)束 thread1準(zhǔn)備休眠:2081 thread3準(zhǔn)備休眠:5298 thread2準(zhǔn)備休眠:2812 thread1休眠結(jié)束 thread2休眠結(jié)束 thread3休眠結(jié)束 說明:由于線程3休眠時間最長,所以最后結(jié)束,,線程1休眠時間最短,,所以最先結(jié)束。 學(xué)習(xí)檢測1,、下列說法中錯誤的一項是 一個線程是一個Thread類的實例 線程從傳遞給純種的Runnable實例run()方法開始執(zhí)行 線程操作的數(shù)據(jù)來自Runnable實例 新建的線程調(diào)用start()方法就能立即進(jìn)入運(yùn)行狀態(tài) 新建的線程調(diào)用start()方法就能立即進(jìn)入運(yùn)行狀態(tài) - 正確 2,、下列關(guān)于Thread類提供的線程控制方法的說法中,錯誤的一項是 在線程A中執(zhí)行線程B的join()方法,,則線程A等待直到B執(zhí)行完成 線程A通過調(diào)用interrupt()方法來中斷其阻塞狀態(tài) 若線程A調(diào)用方法isAlive()返回值為true,,則說明A正在執(zhí)行中 currentThread()方法返回當(dāng)前線程的引用 currentThread()方法返回當(dāng)前線程的引用 - 正確 3、下列關(guān)于線程的說法以中,,正確的一項是 由同一類創(chuàng)建的多個線程都同時運(yùn)行結(jié)束 創(chuàng)建線程只能通過繼承java.lang.Thread類 調(diào)用suspend()方法暫停的一個線程將不會再被重新執(zhí)行 程序的執(zhí)行完畢與超級線程(daemon threads)無關(guān) 程序的執(zhí)行完畢與超級線程(daemon threads)無關(guān) - 正確 Thread類常用API |
|