版權(quán)聲明
- 本文原創(chuàng)作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
一、填空題
1.實(shí)現(xiàn)多線程的兩種方式是繼承________類和實(shí)現(xiàn)________接口。
2.線程的整個(gè)生命周期分為5個(gè)階段,分別是________、________ 、________、阻塞狀態(tài)和死亡狀態(tài)。
3.在Thread類中,提供了一個(gè)________方法用于啟動新線程。
4.執(zhí)行________方法,可以讓線程在規(guī)定的時(shí)間內(nèi)休眠。
5.同步代碼塊使用________關(guān)鍵字來修飾。
二、判斷題
1.對Java程序來說,只要還有一個(gè)前臺線程在運(yùn)行,這個(gè)進(jìn)程就不會結(jié)束。
2.使用synchronized關(guān)鍵字修飾的代碼塊,被稱作同步代碼塊。
3.操作系統(tǒng)中的每一個(gè)進(jìn)程中都至少存在一個(gè)線程。
4.線程結(jié)束等待或者阻塞狀態(tài)后,會進(jìn)入運(yùn)行狀態(tài)。
5.當(dāng)調(diào)用一個(gè)正在運(yùn)行線程的stop()方法時(shí),該線程便會進(jìn)入休眠狀態(tài)。
三、選擇題
1.下列有關(guān)線程的創(chuàng)建方式說法錯(cuò)誤的是( )
A、通過繼承Thread類與實(shí)現(xiàn)Runnable接口都可以創(chuàng)建多線程程序
B、實(shí)現(xiàn)Runnable接口相對于繼承Thread類來說,可以避免由于Java的單繼承帶來的局限性
C、通過繼承Thread類與實(shí)現(xiàn)Runnable接口創(chuàng)建多線程這兩種方式?jīng)]有區(qū)別
D、大部分的多線程應(yīng)用都會采用實(shí)現(xiàn)Runnable接口方式創(chuàng)建
2.以下哪種原因不會導(dǎo)致線程暫停運(yùn)行()
A、等待
B、阻塞
C、休眠
D、掛起及由于I/O操作而阻塞
3.以下關(guān)于計(jì)算機(jī)中,線程調(diào)度模型的說法錯(cuò)誤的是( )
A、在計(jì)算機(jī)中,線程調(diào)度有兩種模型,分別是分時(shí)調(diào)度模型和搶占式調(diào)度模型
B、Java虛擬機(jī)默認(rèn)采用分時(shí)調(diào)度模型
C、分時(shí)調(diào)度模型是指讓所有的線程輪流獲得CPU的使用權(quán)
D、搶占式調(diào)度模型是指讓可運(yùn)行池中優(yōu)先級高的線程優(yōu)先占用CPU
4.Java多線程中,關(guān)于解決死鎖的方法說法錯(cuò)誤的是( )
A、避免存在一個(gè)進(jìn)程等待序列{P1,P2,…,Pn},其中P1等待P2所占有的某一資源,P2等待P3所占有的某一源,……,而Pn等待P1所占有的的某一資源,可以避免死鎖
B、打破互斥條件,即允許進(jìn)程同時(shí)訪問某些資源,可以預(yù)防死鎖,但是,有的資源是不允許被同時(shí)訪問的,所以這種辦法并無實(shí)用價(jià)值
C、打破不可搶占條件。即允許進(jìn)程強(qiáng)行從占有者那里奪取某些資源。就是說,當(dāng)一個(gè)進(jìn)程已占有了某些資源,它又申請新的資源,但不能立即被滿足時(shí),它必須釋放所占有的全部資源,以后再重新申請。它所釋放的資源可以分配給其它進(jìn)程。這樣可以避免死鎖
D、使用打破循環(huán)等待條件(避免第一個(gè)線程等待其它線程,后者又在等待第一個(gè)線程)的方法不能避免線程死鎖
5.對于線程的生命周期,下面四種說法正確的有哪些? (多選)( )
A.調(diào)用了線程的start()方法,該線程就進(jìn)入運(yùn)行狀態(tài)
B.線程的run()方法運(yùn)行結(jié)束或被未catch的InterruptedException 等異常終結(jié),那么該線程進(jìn)入死亡狀態(tài)
C.線程進(jìn)入死亡狀態(tài),但是該線程對象仍然是一個(gè)Thread對象,在沒有被垃圾回收器回收之前仍可以像引用其他對象一樣引用它
D.線程進(jìn)入死亡狀態(tài)后,調(diào)用它的start()方法仍然可以重新啟動
四、簡答題
1.簡述創(chuàng)建多線程的兩種方式。
2.簡述同步代碼塊的作用。
同步代碼塊的作用是控制線程,保證同步代碼塊中只能有一個(gè)線程在運(yùn)行,保證了多線程操作數(shù)據(jù)的安全性。文章來源:http://www.zghlxwxcb.cn/news/detail-485287.html
五、編程題
- 編寫一個(gè)多線程程序,模擬火車售票窗口售票的功能。創(chuàng)建線程1和線程2,通過這兩個(gè)線程共同售出300張票。
參考答案
一、
1.Thread Runnable
2.新建狀態(tài)(New)、就緒狀態(tài)(Runnable)、運(yùn)行狀態(tài)(Running)
3.start()
4.sleep()
5.synchronized
二、
1.對
2.對
3.對
4.錯(cuò)
5.錯(cuò)
三、
1.C
2.B
3.B
4.D
5.BC
四、
1.
一種是繼承java.lang包下的Thread類,覆寫Thread類的run()方法,在run()方法中實(shí)現(xiàn)運(yùn)行在線程上的代碼。
new Thread() {
public void run(){}
}.start();
另一種就是實(shí)現(xiàn)java.lang.Runnable接口,同樣是在run()方法中實(shí)現(xiàn)運(yùn)行在線程上的代碼。
class MyThread implements Runnable{
public void run(){}
}
2.
同步代碼塊的作用是控制線程,保證同步代碼塊中只能有一個(gè)線程在運(yùn)行,保證了多線程操作數(shù)據(jù)的安全性。
五、文章來源地址http://www.zghlxwxcb.cn/news/detail-485287.html
public class Example {
public static void main(String[] args) {
TicketWindow tw = new TicketWindow();
new Thread(tw, "線程1").start();
new Thread(tw, "線程2").start();
}
}
class TicketWindow implements Runnable {
private int num = 300;
public void run() {
while (num > 0) {
Thread th = Thread.currentThread();
String th_name = th.getName();
System.out.println(th_name + " 正在發(fā)售第 " + num-- + " 張票 ");
}
}
}
到了這里,關(guān)于Java期末考試試題及參考答案(12)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!