



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、狂翔 IT 工作室多線程試程選擇題1 .下列說法中,正確的一項是()AA.單處理機的計算機上,2 個純種一官半職直不能并發(fā)執(zhí)行B.單處理機的計算機上,2 個線程實際能夠并發(fā)執(zhí)行C.一個線程可以包含多個線程D.一個進程只能包含一個線程2 .下列說法中錯誤的一項是()AA.線程就是程序 B.線程是一個程序的單個執(zhí)行流B.多線程是指一個程序的多個執(zhí)行流 D.多線程用于實現(xiàn)并發(fā)3 .下列哪個一個操作不能使線程從等待阻塞狀態(tài)進入對象阻塞狀態(tài)(D)A.等待陰塞狀態(tài)下的線程被 notify()喚B.等待阻塞狀態(tài)下的純種被 interrput()中斷C.等待時間到D.等待阻塞狀態(tài)下的線程調(diào)用 wait()方法
2、4 .下列哪個方法可以使線程從運行狀態(tài)進入其他阻塞狀態(tài)(A)A.sleepB.waitC.yieldD.start5 .下列不是進程組成部分的一項是(D)A.代碼 B.數(shù)據(jù) C.內(nèi)核狀態(tài) D.顯示器6 .下列哪一個不屬于 java 線程模型的組成部分(D)A.虛擬的 CPUB.虛擬 CPU 執(zhí)行的代碼C.代碼所操作的數(shù)據(jù) D.執(zhí)行流7 .下列說法中錯誤的一項是(C)A.Java 中的第一個線程都屬于某個線程組B.線程只能在其創(chuàng)建時設(shè)置所屬的線程組C.線程創(chuàng)建之后,可以從一個線程組轉(zhuǎn)移到另一個線程組D.新建的線程默認(rèn)情況下屬于其父線程所屬的線程組8 .下列不屬于線程組成部分的一項是(C)A.程序
3、計數(shù)器 B.堆棧C.進程地十空間中的彳弋碼 D.棧指針9 .下列關(guān)于 JAVA 線程模型的說法中,錯誤的一項是(A)A.Java 線程模型包括計算機的 CPUB.代碼可以與其他線程共享C.數(shù)據(jù)可以被多個線程共享 D.線程模型在 java.lang.Thread 類中被定義10 .下列說法中錯誤的一項是(D)A.一個線程是一個 Thread 類的實例B.線程從傳遞名純種的 Runnable 實例 run()方法開始執(zhí)行C.線程操作的數(shù)據(jù)來自 Runnable 實例D.新建的線程調(diào)用 start()方法就能立即進入運行狀態(tài)11 .下列關(guān)于 Thread 類提供的線程控制方法的說法中,錯誤的一項是(
4、D)A.在線程 A 中執(zhí)行線程 B 的 join()方法,則線程 A 等待直到 B 執(zhí)行完成B.線程 A 通過調(diào)用 interrupt。方法來中斷其阻塞狀態(tài)C.若線程 A 調(diào)用方法 isAlive()返回值為 true,則說明 A 正在執(zhí)行中D.currentThread()方法返回當(dāng)前線程的引用12 .下列說法中,錯誤的一項是()A.對象鎖在 synchronized()語句執(zhí)行完之后由持有它的線程返還B.對象鎖在 synchronized()語句中出現(xiàn)異常時由持有它的線程返還C.當(dāng)持有鎖的線程調(diào)用了該對象的 wait()方法時,線程將釋放其持有的鎖D.當(dāng)持有鎖的線程調(diào)用了該對象的構(gòu)造方法時
5、,線程將釋放其持有的鎖13 .下面的哪一個關(guān)鍵字通宵用來對對象的加鎖,從而使得對對象的訪問是排他的 AA.sirializeBtransientCsynchronizedDstatic14 .下列關(guān)于線程的說法以中,正確的一項是(D)A.由同一類創(chuàng)建的多個線程都同時運行結(jié)束B.創(chuàng)建線程只能通過繼承 java.lang.Thread 類C.調(diào)用 suspend()方法暫停的一個線程將不會再被重新執(zhí)行D.程序的執(zhí)行完畢與超級線程(daemonthreads)無關(guān)15 .下列說法中錯誤的一項是(C)A.可串行化的類必須實現(xiàn) Serializable 接口B.可串行化的類中的靜態(tài)變量可以不被串行化C.
6、private 數(shù)據(jù)訪問權(quán)限能夠限制數(shù)據(jù)不被串行化D.對象串行化使用 java 語言提供的默認(rèn)機制16 .下列說法中錯誤的一項是(C)A.可串行化的類必須實現(xiàn) Serializable 接口B.可串行化的類中的靜態(tài)變量可以不被串行化C.private 數(shù)據(jù)訪問權(quán)限能夠限制數(shù)據(jù)不被串行化D.對象串行化 java 語言提供的默認(rèn)機制17 .下列說法中正確的一項是(A)A.代碼和數(shù)據(jù)是進程的組成部分 B.代碼和數(shù)據(jù)是線程的組成部分C.進程是輕型的線程 D.線程中包括線程18 .下列說法中錯誤的一項是(C)A.java 的純種體由 Thread 類的 run()方法定義B.線程創(chuàng)建時已經(jīng)確定了提供線程
7、體的對象C.在程序中通過調(diào)用 Thread 類的 run()方法創(chuàng)建線程對象D.java 中每一個線程都有自己的名字19 .下列說法中錯誤的一項是(B)A.共享數(shù)據(jù)的所有訪問都必須使用 synchronized 加鎖B.共享數(shù)據(jù)的訪問不一定全部使用 synchronized 加鎖C.所有的對共享數(shù)據(jù)的訪問都是臨界區(qū)D.臨界區(qū)必須使用 syschronized 標(biāo)識20.下列有關(guān)線程的敘述中正確的一項是(B)A.一旦一個線程被創(chuàng)建,它就立即開始運行B.使用 start()方法可以使一個線程成為可運行的,但是它不一定立即開始運行C.當(dāng)一個線程因為搶占機制而停止運行時,它被放在可運行隊列的前面D.一
8、個線程可能因為不同的原因而終止并進入終止?fàn)顟B(tài).填空題1 .在操作系統(tǒng)中,被稱做輕型的進程是線程2 .多線程程序設(shè)計的含義是可以將一個程序任務(wù)分成幾個并行的任務(wù)3 .在 Java 程序中,run()方法的實現(xiàn)有兩種方式:實現(xiàn) Runnable 接口和_繼承 Thread 類4 .線程的高度是指在單個 CPU 上以某種順序運行多個線程5 .多個線程并發(fā)執(zhí)行時,各個線程中語句的執(zhí)行順序是確定的,但是線程之間的相對執(zhí)行順序是不確定的6 .Java 中的對象鎖是一種獨占的排他鎖7 .程序中可能出現(xiàn)一種情況:多個純種互相等待對方持有的鎖,而在得到對方的鎖之前都不會釋放自己的鎖,這就是死鎖.8 .notyf
9、yAll()方法將對象 waitpool 中的所有純種都移到 lockpool 中。9 .在一個線程中,建議使用標(biāo)志,而不使用 stop()方法終止另一個線程。10 .Java 線程組把一組線程看做一個對象進行統(tǒng)一處理。11 .進程是一個內(nèi)核級的實體,而線程是一個用戶級的實體12 .在 Java 線程模型中的數(shù)據(jù)和代碼構(gòu)成了線程體。13 .線程的優(yōu)先級是在 Thread 類的常數(shù) MIN_PRIORITY 和 MAXPRIORITY之間的一個值14 .Java 的線程高度策略是基于優(yōu)先級的搶占式調(diào)度。15 .處于新建狀態(tài)的線程可以使用的控制方法是 start()和 stop()。16 .一個進
10、程可以包含多個線程17 .多任務(wù)操作系統(tǒng)運行多個進程來并發(fā)地執(zhí)行多個任務(wù)18 .線程是由表示程序運行狀態(tài)的寄存器組成的19 .多線程允許單個程序創(chuàng)建多個并行執(zhí)行的線程來完成多個子任務(wù)20 .Thread 類中表示最高優(yōu)先級的常量是 getPriority(),而表示最低優(yōu)先級的常量是 setPriority(0.三.簡答題1 .簡述 synchronized 和 java.util.concurrent.locks.Lock 的異同?答:主要相同點:Lock 能完成 synchronized 所實現(xiàn)的所有功能主要不同點:Lock 有比 synchronized更精確的線程語義和更好的性能。sy
11、nchronized 會自動釋放鎖,而 Lock 一定要求程序員手工釋放,并且必須在 finally 從句中釋放。2 .理解幾個概念對象鎖、sleep、wait、notify、notifyAll對象鎖:每個對象都有對象鎖,當(dāng)某個線程進入用 synchronized 定義方法時,就獲得了當(dāng)前類對象(方法所屬的類的對象)的鎖,其他線程就不能再獲得該鎖,直到線程釋放該鎖。一個類對象有一個對象鎖,多個同步方法公用一個對象鎖。sleep:是當(dāng)前線程處于休眠狀態(tài),將對 cpu 的控制權(quán)交給其他線程,但不釋放當(dāng)前對象的鎖,其他線程可以獲得 cpu,但不能進入當(dāng)前線程控制的對象鎖。wait:與 sleep 的
12、區(qū)別是,它會釋放對象鎖,其他線程可以進入該同步塊。notify:進入當(dāng)前同步塊的線程調(diào)用 wait 方法變成休眠狀態(tài)的線程,notify 將該線程變成等待狀態(tài)。notifyAll:進入當(dāng)前同步塊的線程調(diào)用 wait 方法變成休眠狀態(tài),notifyAll 使所有休眠線程變成等待狀態(tài)。一個類中有多個同步方法,進入任意一個同步塊都將獲得該對象鎖,由于 wait 方法使進入同步塊的線程休眠,notify 只能喚醒所有被休眠線程中的一個,notifyAll 可以喚醒所有休眠線程。通常線程的通信通過 wait,notifyAll 和 wait 條件來實現(xiàn)。3 .java 中有幾種方法可以實現(xiàn)一個線程?用什
13、么關(guān)鍵字修飾同步方法?stop()和suspend()方法為何不推薦使用?答:有兩種實現(xiàn)方法,分別是繼承 Thread 類與實現(xiàn) Runnable 接口用 synchronized 關(guān)鍵字修飾同步方法反對使用 stop(),是因為它不安全。它會解除由線程獲取的所有鎖定,而且如果對象處于一種不連貫狀態(tài),那么其他線程能在那種狀態(tài)下檢查和修改它們。結(jié)果很難檢查出真正的問題所在。suspend()方法容易發(fā)生死鎖。調(diào)用 suspend()的時候,目標(biāo)線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被掛起的線程恢復(fù)運行。對任何線程來說,如果它們想恢復(fù)目標(biāo)線程,同
14、時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應(yīng)該使用 suspend(),而應(yīng)在自己的 Thread類中置入一個標(biāo)志,指出線程應(yīng)該活動還是掛起。若標(biāo)志指出線程應(yīng)該掛起,便用 wait()命其進入等待狀態(tài)。若標(biāo)志指出線程應(yīng)當(dāng)恢復(fù),則用一個 notify()重新啟動線程。4 .sleep()和 wait()有什么區(qū)別?答:sleep 是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復(fù)。調(diào)用 sleep 不會釋放對象鎖。wait 是 Object 類的方法,對此對象調(diào)用 wait 方法導(dǎo)致本線程放棄對象鎖,進入等待此對象的
15、等待鎖定池,只有針對此對象發(fā)出 notify 方法(或 notifyAll)后本線程才進入對象鎖定池準(zhǔn)備獲得對象鎖進入運行狀態(tài)。5 .同步和異步有何異同,在什么情況下分別使用他們?舉例說明。答:如果數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進行同步存取。當(dāng)應(yīng)用程序在對象上調(diào)用了一個需要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時,就應(yīng)該使用異步編程,在很多情況下采用異步途徑往往更有效率。6 .啟動一個線程是用 run()還是 start()?答:啟動一個線程是調(diào)用 start()方法,使
16、線程所代表的虛擬處理機處于可運行狀態(tài),這意味著它可以由 JVM 調(diào)度并執(zhí)行。這并不意味著線程就會立即運行。run()方法可以產(chǎn)生必須退出的標(biāo)志來停止一個線程。7 .當(dāng)一個線程進入一個對象的一個 synchronized 方法后,其它線程是否可進入此對象的其它方法?答:不能,一個對象的一個 synchronized 方法只能由一個線程訪問。8 .請說出你所知道的線程同步的方法。答:wait():使一個線程處于等待狀態(tài),并且釋放所持有的對象的 lock。sleep():使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException 異常。notify():喚醒一個處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由 JVM 確定喚醒哪個線程,而且不是按優(yōu)先級。Allnotity():喚醒所有處入等待狀
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手車置換培訓(xùn)
- 電力安全生產(chǎn)法律法規(guī)培訓(xùn)
- 2025消防設(shè)施培訓(xùn)
- 復(fù)星醫(yī)藥產(chǎn)品經(jīng)理培訓(xùn)
- 我的喜怒哀樂心理健康活動
- 大學(xué)生自我意識培養(yǎng)與心理健康
- 語言文字規(guī)范化培訓(xùn)資料
- 護理科研培訓(xùn)心得體會
- 2025高校教育信息化
- 中層經(jīng)理管理能力提升特訓(xùn)營
- 臨床常用降壓藥物
- 公交駕駛員職業(yè)病健康講座
- 教師培訓(xùn)課件:關(guān)于教師的專業(yè)發(fā)展
- 感染性休克指南解讀
- 綠色施工實施策劃方案
- 【MOOC】天文探秘-南京大學(xué) 中國大學(xué)慕課MOOC答案
- 《老年人合理用藥》課件
- 【MOOC】電工電子學(xué)-浙江大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年廣西職業(yè)院校技能大賽高職組《供應(yīng)鏈管理》賽項規(guī)程
- 現(xiàn)代技術(shù)服務(wù)費合同1
- 2024山西焦煤集團公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
評論
0/150
提交評論