多线程练习题目.docx

上传人:b****3 文档编号:5697552 上传时间:2023-05-09 格式:DOCX 页数:19 大小:24.68KB
下载 相关 举报
多线程练习题目.docx_第1页
第1页 / 共19页
多线程练习题目.docx_第2页
第2页 / 共19页
多线程练习题目.docx_第3页
第3页 / 共19页
多线程练习题目.docx_第4页
第4页 / 共19页
多线程练习题目.docx_第5页
第5页 / 共19页
多线程练习题目.docx_第6页
第6页 / 共19页
多线程练习题目.docx_第7页
第7页 / 共19页
多线程练习题目.docx_第8页
第8页 / 共19页
多线程练习题目.docx_第9页
第9页 / 共19页
多线程练习题目.docx_第10页
第10页 / 共19页
多线程练习题目.docx_第11页
第11页 / 共19页
多线程练习题目.docx_第12页
第12页 / 共19页
多线程练习题目.docx_第13页
第13页 / 共19页
多线程练习题目.docx_第14页
第14页 / 共19页
多线程练习题目.docx_第15页
第15页 / 共19页
多线程练习题目.docx_第16页
第16页 / 共19页
多线程练习题目.docx_第17页
第17页 / 共19页
多线程练习题目.docx_第18页
第18页 / 共19页
多线程练习题目.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

多线程练习题目.docx

《多线程练习题目.docx》由会员分享,可在线阅读,更多相关《多线程练习题目.docx(19页珍藏版)》请在冰点文库上搜索。

多线程练习题目.docx

多线程练习题目

多线程练习题目

多线程

一、单项

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();

}

}

A.第一行会发生编译错误B.第六行会发生编译错误

C.第六行会发生运行错误D.程序会运行和启动

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()

20.Thread类的方法中,getName()方法的作用是()

A.返回线程组的名称B.设置线程组的名称

C.返回线程的名称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))

System.out.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();

System.out.println("DONEWAITING");

}catch(InterruptedExceptione){

System.out.println("INTERRUPTED");

}catch(Exceptione){

System.out.println("OTHEREXCEPTION");

}finally{

System.out.println("FINALLY");

}

}

System.out.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类提供的线程控制方法的一个是()

A.sleep()B.interrupt()C.init()D.yield()

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.langC.java.utilD.java.awt

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.Thread类的常量NORM_PRIORITY代表的优先级是()

A.最低优先级

B.普通优先级

C.最高优先级

D.不代表任何优先级

50.下列哪一个包给出了Runnable接口的定义?

()

A.java.utilB.java.ioC.java.langD.java.sql

 

二、填空题

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等待池中。

三、判断题

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.什么是进程?

与线程有何区别?

五、程序设计题

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(){

System.out.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(){

System.out.println(""+getName());

try{

sleep((int)(Math.random()*1000));

}catch(InterruptedExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

System.out.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(i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2