多线程练习题目.docx
- 文档编号:26349020
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:20
- 大小:29.44KB
多线程练习题目.docx
《多线程练习题目.docx》由会员分享,可在线阅读,更多相关《多线程练习题目.docx(20页珍藏版)》请在冰豆网上搜索。
多线程练习题目
多线程练习题目
————————————————————————————————作者:
————————————————————————————————日期:
多 线程ﻩ
一、单项
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.transient B.synchronizedC.serialize D.static
4.下列哪个方法可用于创建一个可运行的类?
()
A.publicclass X implementsRunable{publicvoidrun(){……} }
B. publicclassXimplements Thread{publicvoid run() {……}}
C.publicclassXimplementsThread{publicintrun(){……}}
D.public classXimplementsRunable{protected voidrun(){……} }
5.下面哪个选项不会直接引起线程停止执行?
()
A.从一个同步语句块中退出来
B.调用一个对象的wait方法
C.调用一个输入流对象的read方法
D.调用一个线程对象的setPriority方法
6.使当前线程进入阻塞状态,直到被唤醒的方法是()
A.resume()方法 B.wait()方法C.suspend()方法D.notify()方法
7.运行下列程序,会产生的结果是()
publicclass XextendsThreadimplementsRunnable{
publicvoidrun(){
System.out.println(“thisisrun()”);
}
public staticvoidmain(String[]args)
{
Threadt=newThread(new X());
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(ThreadGroup group,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.synchronized B.transientC.serialize D.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.Thread B.Runnable C.Object D.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.下列程序的输出结果是( )
package com.mytest.www;
classC6implementsRunnable{
ﻩpublicvoid run(){
for(inta=3;a<=10;a++){
ﻩﻩif(isPrime(a))
ﻩﻩﻩSystem.out.print(a+"\t");
}
ﻩ}
ﻩpublicboolean isPrime(int n){
ﻩﻩbooleanb=true;
for(inti=2;i<n-1&&b;i++){
ﻩif((n%i)==0)
ﻩﻩb=false;
}
ﻩﻩreturnb;
ﻩ}
ﻩ
}
publicclass Test6{
public static void main(Stringargs[]){
ﻩﻩThreadt=newThread(newC6());
ﻩt.start();
}
}
A、246B、3 57C、36 9 D、2 5 8
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.下列程序的输出结果是( )。
publicclass Test{
publicstaticvoid main(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("ALL DONE");
}
}
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.serialize B. transient C.synchronized D.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
Thead t=newThead();
T.start(target)
Theadt= newThead();
T.run(target)
Thead类定义与下列哪一个包中?
()
A. java.io B.java.lang C.java.util D.java.awt
46.下列说法中,错误的一项是( )
A.实现了Runnable接口的类,可以通过extends来继承其他的类
B.实现了Runnable接口的类,不能继承其他的类
C.Thread类的子类应该是关于CPU行为的类
D.Thread类的子类也实现了Runnable接口
47.下列是通过实现Runnable接口创建的类,其中正确的一项是()
A.class A3 implementsRunnable
{
voidrun()
{
//··········
}
}
B.classA3extendsRunnable
{
publicvoidrun()
{
//··········
}
}
C.class A3implementsRunnable
{
public void run()
{
//··········
}
}
D.class A3implementsRunnable
{
//··········
}
48.Thread类的常量NORM_PRIORITY代表的优先级是( )
A.最低优先级
B.普通优先级
C.最高优先级
D.不代表任何优先级
50.下列哪一个包给出了Runnable接口的定义?
( )
A. java.utilB.java.ioC.java.lang D.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。
public classTestimplementsRunnable{
public staticvoid main(Stringargs[]){
ﻩﻩTesttest=newTest();
ﻩﻩThread t=newThread(test);
//A
ﻩ}
ﻩpublicvoid run(){
ﻩSystem.out.println("running");
}
ﻩvoidgo(){
ﻩstart
(1);
ﻩ}
voidstart(inti){
ﻩ
ﻩ}
}
8.在下列程序的横线处填入正确的语句
publicclassTest{
ﻩpublicstaticvoidmain(Stringargs[]) {
ﻩThreadt1=new subTread("First");
ﻩﻩThreadt2 = newsubTread("Second");
ﻩt1.start();
t2.start();
}
}
classsubTreadextendsThread {
ﻩpublicsubTread(Strings) {
ﻩ
}
ﻩpublicvoidrun() {
ﻩﻩSystem.out.println(""+getName());
ﻩtry {
ﻩﻩsleep((int)(Math.random()*1000));
ﻩ}catch(InterruptedException e) {
ﻩﻩ// TODOAuto-generatedcatchblock
ﻩe.printStackTrace();
ﻩﻩ}
System.out.println("结束!
"+ ge
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多线程 练习 题目