多线程练习题卷.docx
- 文档编号:4331747
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:15
- 大小:38.38KB
多线程练习题卷.docx
《多线程练习题卷.docx》由会员分享,可在线阅读,更多相关《多线程练习题卷.docx(15页珍藏版)》请在冰豆网上搜索。
多线程练习题卷
多线程
一、单项选择题〔从以下各题四个备选答案中选出一个正确答案,并将其代号写在答题纸相应位置处。
答案错选或未选者,该题不得分。
〕50
1.下述哪个选项为真?
〔〕
A.Error类是一个RoutimeException异常
B.任何抛出一个RoutimeException异常的语句必须包含在try块之内
C.任何抛出一个Error对象的语句必须包含在try块之内
D.任何抛出一个Exception异常的语句必须包含在try块之内
2.以下关于Java线程的说法哪些是正确的?
〔〕
A.每一个Java线程可以看成由代码、一个真实的CPU以及数据3局部组成
B.创立线程的两种方法,从Thread类中继承的创立方式可以防止出现多父类问题
C.Thread类属于java.util程序包
D.以上说法无一正确
3.哪个关键字可以对对象加互斥锁?
()
A.transientB.synchronizedC.serializeD.static
4.以下哪个方法可用于创立一个可运行的类?
()
A.publicclassXimplementsRunable{publicvoidrun(){}}
B.publicclassXimplementsThread{publicvoidrun(){}}
C.publicclassXimplementsThread{publicintrun(){}}
D.publicclassXimplementsRunable{protectedvoidrun(){}}
5.下面哪个选项不会直接引起线程停止执行?
()
A.从一个同步语句块中退出来
B.调用一个对象的wait方法
C.调用一个输入流对象的read方法
D.调用一个线程对象的setPriority方法
6.使当前线程进入阻塞状态,直到被唤醒的方法是()
A.resume()方法B.wait()方法C.suspend(方法D.notify()方法
7.运行以下程序,会产生的结果是()
publicclassXextendsThreadimplementsRunnable{
publicvoidrun(){
System.out.println(thisisrun()〞;
}
publicstaticvoidmain(String[]args)
{
Threadt=newThread(newX());
t.start();
8.java.lang.ThreadGroup类的作用为()
A.使任何类都可以为线程提供线程体
B.定义了线程与交互的方法
C.提供了线程组或组中的每个线程进行操作的方法
D.以上都不是
9.实现线程的创立有()方法
A.一种B.两种C.三种D.四种
10.一个进程可以包含()个线程
A.一B.二C.三D.四
11.Java中的线程模型包含()
A.—个虚拟处理机B.CPU执行的代码
C.代码操作的数据D.以上都是
12.关于线程组以下说法错误的选项是()
A.在应用程序中线程可以独立存在,不一定要属于某个线程
B.一个线程只能创立时设置其线程组
C.线程组由java.lang包中的ThreadGroup类实现
D.线程组使一组线程可以作为一个对象进行统一处里或维护
13.以下定义线程方法正确的选项是()
A.PublicThread();
B.PublicThread(Runnabletarget);
C.PublicThread(ThreadGroupgroup,Runnabletarget);
D.以上都正确
14.以下不属于Thread类提供的线程控制方法是()
A.break()B.sleep()C.yield()D.join()
15.以下关于线程的说法正确的选项是()
A.线程就是进程
B.线程在操作系统出现后就产生了
C.Soloris是支持线程的操作系统
D.在单处理器和多处理器上多个线程不可以并发执行
16.以下不属于线程生命周期状态的是()
A.新建状态B.可运行状态
C.运行状态D.解锁状态
17.以下不属于Thread类的线程优先级静态常量的是()
A.MIN_PRIORITY
B.MAX__PRIORITY
C.NORM__PRIORITY
D.BEST__PRIORITY
18.()关键字可以对对象加互斥锁。
A.synchronizedB.transientC.serializeD.static
19.以下()方法和resume()方法相互搭配,使线程停止执行,然后调用resume(方法恢复线程
A.interrupt()B.stop()C.suspend()D.yield()
2O.Thread类的方法中,
A.返回线程组的名称
C.返回线程的名称
getName()方法的作用是()
B.设置线程组的名称
D.设置线程的名称
21.线程调用了sleep()方法后,该线程将进入()状态
A.可运行状态B.运行状态C.阻塞状态D.终止状态
22.以下()类或接口定义了线程同步与交互的方法。
A.ThreadB.RunnableC.ObjectD.ThreadGroup
23.Java中线程是由线程类的()方法定义的。
A.init()B.run()C.application()D.main()
24.线程控制方法中,stop()的作用是()
A.强行终止线程
B.使比其低的优先级线程运行
C.只让给同优先级运行
D.返回当前线程的引用
25.在以下()情况下,线程就进入可运行状态。
A.线程调用了sleep()方法时
B.线程调用了join()方法时
C.线程调用了yield()方法时
D.以上都是
26.以下说法中,正确的一项为哪一项()
A.单处理机的计算机上,2个线程实际上不能并发执行
B.单处理机的计算机上,2个线程实际上能够并发执行
C.一个线程可以包含多个进程
D.一个进程可以包含多个线程
27.以下说法中错误的一项为哪一项()
A.线程就是程序
B.线程是一个程序的单个执行流
C.多线程是指一个程序的多个执行流
D.多线程用于实现并发
28.以下关于Thread类的线程控制方法的说法中错误的一项为哪一项()
A.线程可以通过调用sleep()方法使比当前线程优先级的线程运行
B.线程可以通过调用yield()方法和当前线程优先级一样的线程运行
C.线程sleep()方法调用结束后,该线程进入运行状态
D.假设没有相同优先级的线程处于可运行状态,县城调用yield()方法时,当前线程将继续执
行
29.以下程序的输出结果是()
packagecom.mytest.www;
classC6implementsRunnable{
publicvoidrun(){
for(inta=3;a<=10;a++){if(isPrime(a))
Systemout.print(a+"\t");
}
}
publicbooleanisPrime(intn){booleanb=true;
for(inti=2;i if((n%i)==0) b=false } returnb; } } publicclassTest6{ publicstaticvoidmain(Stringargs[]){ Threadt=newThread(newC6());t.start(); } } A、246B、357C、369D、258 30.以下哪一个操作不能使线程从等待阻塞状态进入对象锁阻塞状态? A.等待阻塞状态下的线程被notify()唤醒 B.等待阻塞状态下的线程被interrput()中断 C.等待时间到 D.等待阻塞状态下的进程调用wait()方法 31.以下哪一个方法可以使线程从运行状态进入其他阻塞状态? A.sleep()B.wait()C.yield()D.start() 32.以下哪一个不属于Java线程模型的组成局部? A.虚拟的CPU B.虚拟CPU执行的代码 C.代码所操作的数据 D.执行流 33.以下程序的输出结果是()。 publicclassTest{ publicstaticvoidmain(Stringargs[]){ newTest(); } Test(){ Testt1=this; Testt2=this; synchronized(t1){try{ t2.wait(); Systemout.println("DONEWAITING"); }catch(InterruptedExceptione){ Systemout.println("INTERRUPTED"); }catch(Exceptione){ Systemout.println("OTHEREXCEPTION");}finally{ Systemout.println("FINALLY"); } } Systemout.println("ALLDONE"); } } A.输出ALLDONE〞 B.输出INTERRUPTED〞 C.输出DONEWAITING〞 D.编译通过,但是不输出任何字符串 34.以下哪一种情况一定不会使当前的线程暂停执行? () A.该线程抛出一个InterruptedException B.该线程调用sleep()方法 C.该线程创立一个新的子线程 D.该线程从输入流读取文件数据 35.以下说法中错误的一项为哪一项() A.Java中的每一个线程都属于某个线程组 B.线程只能在其创立时设置所属的线程组 C.线程创立之后,可以从一个线程组转移到另一个线程组 D.新建的线程组默认情况下属于其父线程所属的线程组 36.以下不属于线程组成局部的一项为哪一项() A.程序计数器B.堆栈 C.进程地址空间中的代码C.栈指针 37.以下关于Java线程模型的说法中,错误的一项为哪一项() A.Java线程模型包括了计算机的CPU B.代码可以与其他线程共享 C.数据可以被多个线程共享 D.线程模型在java.lang.Thread类中被定义 38.以下关于Thread类提供的线程控制方法的说法中,错误的一项为哪一项() A.在线程a中执行线程b的join()方法,那么线程a等待直到b执行完成 B.线程a通过调用interrupt()方法来中断其阻塞状态 C.假设线程a调用方法isAlive()返回值为true,那么说明a正在执行中 D.currentThread()方法返回当前线程的引用 39.下面的哪一个关键字通常用来对对象加锁,从而使得对对象的访问是排他的? () A.serializeB.transientC.synchronizedD.static 40.以下说法中错误的一项为哪一项() A.可串行化的类必须实现Serializable接口 B.可串行化的类中的静态变量可以不被串行化 C.private数据访问权限能够限制数据不被串行化 D.对象串行化使用Java语言提供的默认机制 41.以下说法中正确的一项为哪一项() A.代码和数据是进程的组成局部 B.代码和数据是线程的组成局部 C.进程是轻型线程 D.线程中包含进程 42.以下说法中错误的一项为哪一项() A.共享数据的所有访问都必须使用synchronized加锁 B.共享数据的访问不一定全部使用synchronized加锁 C.所有的对共享数据的访问都是临界区 D.临界区必须使用synchronized标识 43.以下有关线程的表达中正确的一项为哪一项() A.一旦一个线程都创立,它就立即开始运行 B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行 C.当一个线程因为抢占机制而停止运行时,它被放在课运行队列的前面 D.一个线程可能因为不同的原因停止并进入终止状态 44.以下方法中,不属于Thread类提供的线程控制方法的一个是〔 C.init〔〕D.yield〔〕 A.sleep〔〕B.interrupt〔〕 45.实现Runnable接口创立一个线程的语句是〔Theadt=newThead〔target〕Theadt=newThead〔〕; t.target=target Theadt=newThead〔〕;T.start〔target〕 Theadt=newThead〔〕; T.run〔target〕 Thead类定义与以下哪一个包中? 〔〕 A.java.ioB.java.lang 46.以下说法中,错误的一项为哪一项〔〕 A.实现了Runnable接口的类,可以通过extends来继承其他的类 B.实现了Runnable接口的类,不能继承其他的类 C.Thread类的子类应该是关于CPU行为的类 D.Thread类的子类也实现了Runnable接口 47.以下是通过实现Runnable接口创立的类,其中正确的一项为哪一项〔〕 A.classA3implementsRunnable { voidrun〔〕 { // } } B.classA3extendsRunnable { publicvoidrun〔〕 { // } } C.classA3implementsRunnable { publicvoidrun〔〕 { // } } D.classA3implementsRunnable { // 48. NORM_PRIORITY代表的优先级是() Thread类的常量 A.最低优先级 B.普通优先级 C.最咼优先级 D.不代表任何优先级 50.以下哪一个包给出了Runnable接口的定义? 〔〕 A.java.utilB.java.ioC.java.langD.java.sql 二、填空题20 1.线程模型在Java中是由进行定义和描述的。 2.多线程是Java程序的制,它能共享同步数据,处理不同事件。 3.Java的线程调度策略是一种基于优先级的。 4.当线程完成运行并结束后,将不能再运行。 除线程正常运行结束外,还可用其他方法控制 其停止。 可以用法强行终止线程。 5.如果一个线程处于,那么这个线程是不能运行的。 6.提供线程体的特定对象是在创立线程时指定的,创立线程对象是通过类的构造方法实现的。 7.在Java中,新建的线程调用start()方法,将使线程的状态从New(新建状态)转换为。 8.按照线程的模型,一个具体的线程是由虚拟的CPU、代码与数据组成,其中代码与数据构 成了,现成的行为由它决定。 9.Thread类的方法中,toString()方法的作用是。 10.线程是一个级的实体,线程结构驻留在用户空间中,能够被普通的相应级别方法直 接访问。 11.线程是由表示程序运行状态的组成的。 12.在Java线程模型中,一个线程是由、和三局部组成 的。 13.Thread类中表示最高优先级的常量是,而表示最低优先级的常量 14.假设要获得一个线程的优先级,可以使用方法,假设要修改一个线程的优先 级,那么可以使用方法。 15.在Java语言中临界区使用关键字标识。 16.线程的生命周期包括新建状态、运行状态、和终止状态。 17.Java语言使用技术对共享数据操作进行并发控制。 18.进程是由、数据、内核状态和组成的。 19.在Java线程模型中,数据和代码之间的关系是的。 20.线程中方法使执行线程放弃CPU并释放原来持有的对象锁,进入对象的 wait等待池中。 三、判断题(判断以下论述的正误,认为正确的就在答题相应位置划“T〞,错误的划“F〞) 20 1.一旦一个线程被创立,它就可以立即开始运行() 2.调用start()方法可以使一个线程成为可运行的,但是它并不能立即开始执行() 3.主线程不具有默认优先级() 4.Java中线程的优先级从低到高以整数0—9表示() 5.从一个同步语句块中退出来不会直接引起线程停止执行() 6.线程的阻塞是指暂停一个线程的执行以等待某个条件发生() 7.优先级只能在线程启动前设置() 8.当生成守护线程的线程结束时,此守护线程会随之消失() 9.线程之间的通信可以通过共享数据使线程互相交流,也可以通过线程控制方法使线程互相等待() 10.Object类定义了线程同步与交互的方法() 11.线程一旦被创立,那么自动运行() 12.线程创立后需要调用start()方法,将线程置于可运行状态() 13.Thread类中没有定义run()方法() 14.线程开始运行时,是从start()方法开始运行的() 15.一个进程可以创立多个线程() 16.代表优先级的常数值越大优先级越低() 17.程序中可能出现一种情况: 多个线程相互等待对方持有的锁,而在得到对方的锁之前都不 会释放自己的锁,这就是死锁。 () 18.临界区可以是一个语句块,但是不可以是一个方法() 19.释放锁的时候,应该按照加锁顺序的逆序进行() 20.在对象串行化中,可以用来保护类中敏感信息的关键字是protected() 四、简答题(答复要点,并简明扼要作解释)10 1.什么是线程? 它和进程有什么区别? 2.简述线程的生命周期。 3.Runnable接口中包括哪些抽象方法? Thread类有哪些主要域和方法? 4.创立线程有几种方式? 试写出使用这些方式创立线程的一般模式。 为什么有时候必须采用其中一种方式? 5.简述线程的同步控制机制。 6.创立线程有哪两种方法? 7.什么是死锁? 8.线程有哪三种根本状态? 这几种状态是怎样相互转换的? (可画图表示) 9.Java语言中的线程包括哪三局部? 10.什么是进程? 与线程有何区别? 五、程序设计题10 1•编写一个多线程类,该类的构造方法调用Thread类带字符串参数的构造方法。 建立自己 的线程名,然后随机生成一个休眠时间,再将自己的线程名和休眠多长时间显示出来。 该线程运行后,休眠一段时间,该时间就是在构造方法中生成的时间。 最后编写一个测试类,创建多个不同名字的线程,并测试其运行情况。 2•编写一个程序,测试异常。 该类提供一个输入整数的方法,使用这个方法先输入两个整数,再用第一个整数除以第二个整数,当第二个整数为0时,抛出异常,此时程序要捕获异 常。 3•编写一个用线程实现一个数字时钟的应用程序。 该线程类要采用休眠的方式,把绝对大局部时间让系统使用。 4•编写一个使用继承Thread类的方法实现多线程的程序。 该类有两个属性,一个字符串代表线程名,一个整数代表该线程要休眠的时间。 线程执行时,显示线程名和休眠时间。 5•应用继承类Thread的方法实现多线程类,该线程3次休眠假设干(随机)毫秒后显示线程名和第几次执行。 6.请通过实现Runnable接口和继承Thread类分别创立线程,要求: 除了main线程之外,还要创立一个新的线程。 Main线程重复100次“main“,新线程重复100次输出“new〞。 7.为了使下面的程序能够输出“running〞,请在注释处填写相关语句代替注释//A。 publicclassTestimplementsRunnable{ publicstaticvoidmain(Stringargs[]){ Testtest=newTest(); Threadt=newThread(test); //A } publicvoidrun(){ Systemout.println("running"); } voidgo(){start (1); } voidstart(inti){ } } 8.在以下程序的横线处填入正确的语句 publicclassTest{ publicstaticvoidmain(Stringargs[]){Threadt1=newsubTread('First");Threadt2=newsubTread('Second');t1.start();t2.start(); } } classsubTreadextendsThread{publicsubTread(Strings){ } publicvoidrun(){ Systemout.println(〞"+getName()); try{ sleep((int)(Math.random()*1000)); }catch(InterruptedExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }Systemout.println("结束! "+getName()); } } 9.请创立一个线程,指定一个限定时间(如60s),线程运行时,大约每3s输出1次当前所 剩时间,直至给定的限定时间用完。 考点: sleep方法 10.以下是一个模拟订票业务的程序。 BookingClerk类代表自动售票员,其中包含一个订票(booking)方法。 假设一开始有10张票可预定。 程序运行时产生两个订票客户同时自动向 自动售票员订票。 请问会出现什么错误? 该如何修改? 考点: 同步 publicclassTest{ publicstaticvoidmain(Stringargs[]){ BookingClerkbt=newBookingClerk(); newBookingTest(bt,7); newBookingTest(bt,5); } } classBookingClerk{ intremainder=10; voidbooking(intnum){ if(num<=remainder){ Systemout.println("预定"+num+"张"); try{ Thread.sleep(1000); }catch(InterruptedExceptione
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多线程 练习题