java多线程编程练习题doc.docx
- 文档编号:11581668
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:11
- 大小:18.22KB
java多线程编程练习题doc.docx
《java多线程编程练习题doc.docx》由会员分享,可在线阅读,更多相关《java多线程编程练习题doc.docx(11页珍藏版)》请在冰点文库上搜索。
java多线程编程练习题doc
java多线程编程练习题
:
]选择题
1.编写线程类,要继承的父类是:
A:
Object
B:
Runnable
C:
Serializable
D:
Thread
E:
Exception
答
2.编写线程类,可以通过实现那个接口来实现?
A:
Runnable
B:
Throwable
C:
Serializable
D:
Comparable
E:
Cloneable
答:
3.什么方法用于终止一个线程的运行?
A:
sleep
B:
join
C:
wait
D:
stop
E:
notify
答:
4.一个线程通过什么方法将处理器让给另一个优先级别相同的线程?
A:
wait
B:
yield
C:
join
D:
sleep
E:
stop
答:
5.如果要一个线程等待一段时间后再恢复执行此线程,需要调用什么方法?
A:
wait
B:
yield
C:
join
D:
sleep
E:
stop
F:
notify
答:
6.什么方法使等待队列中的第一个线程进入就绪状态?
A:
waitB:
yieldC:
joinD:
sleepE:
stopF:
notify
答:
7.Runnable接口定义了如下哪些方法?
A:
start
B:
stop
C:
resume
D:
run
E:
suspend
答:
&如下代码创建一个新线程并启动线程:
Runnabletarget二newMyRunnable:
ThreadmyThread-newThread:
问:
如下哪些类可以创建target对象,并能编译正确?
A:
publicclassMyRunnableextendsRunnable{publicvoidrun{}}
B:
publicclassMyRunnableextendsObject{publicvoidrun{}}
C:
publicclassMyRunnableimplementsRunnable{publicvoidrun{}}
D:
publicclassMyRunnableextendsRunnable{voidrun{}}
E:
publicclassMyRunnableimplementsRunnable{voidrun{}}
答:
9.给出代码如下:
publicclassMyRunnableimplementsRunnable
{
publicvoidrun
问在虚线处,如下哪些代码可以创建并启动线程?
A:
newRunnable,start;
B:
newThread,run:
C:
newThread).start;
D:
newMyRunnable.start;
答:
[]问答题
1.线程和进程有什么区别?
2.Java创建线程的方式有哪些?
[]编程题
1.编写多线程应用程序,模拟多个人通过一个山洞的模拟。
这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒,随机生成10个人,同时准备过此山洞,显示
一下每次通过山洞人的姓名O
2.编写线程同步模拟应用程序:
大气环境数据为:
温度,湿度,风速。
一个大气环境传感器测量环境数据需要5秒时间。
一个计算机读取传感器的环境数据需要0.01秒时间。
模拟一个计算机读取大气环境传感器的读取的随机的温度,湿度和风速的100次。
多线程
一、判断题
1•如果线程死亡,它便不能运行。
2.在Java中,高优先级的可运行线程会抢占低优先级线程。
3.线程可以用yield方法使低优先级的线程运行。
4...程序开发者必须创建一个线程去管理内存的分配。
5.—个线程在调用它的start方法,之前,该线程将一直处于出生期。
6.当调用一个正在进行线程的stop方法时,该线程便会进入休眠状态。
7.一个线程可以调用yield方法使其他线程有机会运行。
、选择题
1.Java语言中提供了一个_D_线程,自动回收动态分配的内存。
A.异步
B.消费者
C.守护
D.垃圾收集
2.Java语言避免了大多数的_C_错误。
A.数组下标越界
B.算术溢出
C.内存泄露
D.非法的方法参数
3•有三种原因可以导致线程不能运行,它们是_ACDo
A.等待
B.阻塞
C.休眠
D.挂起及由于I/O操作而阻塞
4•当_A方法终止时,能使线程进入死亡状态。
A.run
B.setPrority
C.yield
D.sleep
5.用_E_方法可以改变线程的优先级。
A.run
B.setPrority
C.yield
D.sleep
6.线程通过_C_方法可以使具有相同优先级线程获得处理器。
A.run
B.setPrority
C.yield
D.sleep
7.线程通过_D_方法可以休眠一段时间,然后恢复运行。
A.run
B.setPrority
C.yield
D.sleep
8.方法resume负责重新开始_D_线程的执行。
A.被stop方法停止
B.被sleep方法停止
C.被wait方法停止
D.被suspend方法停止
9._BCD_方法可以用来暂时停止当前线程的运行。
A.stop
B.sleep
C.wait
D.suspend
三、简述题
1•简述程序、进程和线程之间的关系?
什么是多线程程序?
答:
程序是一段静态的代码,它是应用软件执行的蓝本。
进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程。
这个过程也是进程本身从产生、发展、到消亡的过程。
线程是比进程更小的单位。
一个进程在其执行过程中,可以产生多个线程,形成多个执行流。
每个执行流即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。
多线程程序是指一个程序中包含多个执行流。
2•线程有哪几个基本状态?
它们之间如何转化?
简述线程的生命周期。
答:
新建状态,可运行状态,运行状态,阻碍状态,终止状态。
对线程调用各种控制方法,就使线程从一种状态转换到另一种状态。
线程的生命周期从新建开始,在可运行、运行和其他阻碍中循环,在可运行、运行、对象锁阻塞、等待阻塞中循环,最终在运彳丁后run方法结束后终止。
3•什么是线程调度?
Java的线程调度采用什么策略?
答:
在单个CPU上以某种顺序运行多个线程,称为线程的调度。
Java的线程调度策略是一种优先级的抢先式调度。
Java基于线程的优先级选择高优先级的线程进行运行。
该线程将持续运行,直到它终止运行,或其他高优先级线程称为可运行的。
4.如何在Java程序中实现多线程?
答:
1:
通过Thread类的构造方法
2:
通过实现Runnable接口创建线程、
3:
通过继承Thread类创建线程
5.试简述Thread类的子类或实现Runnable接口两种方法的异同?
答:
采用继承Thread类方法使程序代码简单,并可以在run方法中直接调用线程的其他方法。
而实现Runnable接口更符合面向对象设计的思想,因为从00设计的角度,thread类是虚拟CPU的圭寸装,所以Thread的子类应该是关于CPU行为的类。
但在继承Thread类之类构造线程的方法中,Thread类的子类大都是与CPU不相关的类。
而实现Runnable接口的方法,将不影响Java类的体系,所以更加符合面向对象的设计思想。
同时,实现了Runnable接口的类可以用extends继承其他的类。
四、程序设计题
1.编写一个应用程序,在线程同步的情况下来实现“生产者一消费者”问题。
2•修改上题,由于各个线程是异步运行的,因此无法预计其相对速度,为了使生产者能够不断地生产,可以使用循环缓冲区,保证有足够多的内存区保存更多的产品。
publicclassTestEook{
publicstaticvoidmainthrowsException{Bookb-newBook;Thread,currentThread.setPriority;
ThreadAddta-newThreadAdd;ThreadSubts-newThreadSub:
ta.start;ts.start;Thread,sleep;
System.out.println);System.exit;}
}
classBook{
Stringname:
intnumber;
publicBook{this.name-name:
}
this.number-number;}
classThreadAddextendsThread{
Bookb:
publicThreadAdd{this.b-b:
}publicvoidrun{while{synchronized{iftry{b.wait;}catch{}b.notify;b.number++:
}
}}System.out.println;}classThreadSubextendsThread{Bookb;publicThreadSub{this.b-b:
}public
void
run{while{}synchronized{if{try{b.wait;}catch{}}b.notify;b.number—;}System.out.println;}}多线程
一、判断题
1•如果线程死亡,它便不能运行。
2.在Java中,高优先级的可运行线程会抢占低优先级线程。
3.线程可以用yield方法使低优先级的线程运行。
4...程序开发者必须创建一个线程去管理内存的分配。
5.—个线程在调用它的start方法,之前,该线程将一直处于出生期。
6.当调用一个正在进行线程的stop方法时,该线程便会进入休眠状态。
7.一个线程可以调用yield方法使其他线程有机会运行。
二、选择题
1.Java语言中提供了一个_d_线程,自动回收动态分配的内存。
A.异步
B.消费者
C.守护
D.垃圾收集
2.Java语言避免了大多数的_c_错误。
A.数组下标越界
B.算术溢出
C.内存泄露
D.非法的方法参数
3•有三种原因可以导致线程不能运行,它们是_acd_o
A.等待
B.阻塞
C.休眠
D.挂起及由于I/O操作而阻塞
4.当_a_方法终止时,能使线程进入死亡状态。
A.run
B.setPrority
C.yield
D.sleep
5.用_b_方法可以改变线程的优先级。
A.run
B.setPrority
C.yield
D.sleep
6.线程通过_c_方法可以使具有相同优先级线程获得处理器。
A.run
B.setPrority
C.yield
D.sleep
7.线程通过_d_方法可以休眠一段时间,然后恢复运行。
A.run
B.setPrority
C.yield
D.sleep
8.方法resume负责重新开始_d_线程的执行。
A.被stop方法停止
B.被sleep方法停止
C.被wait方法停止
D.被suspend方法停止
9._BCD_方法可以用来暂时停止当前线程的运行。
A.stop
B.sleep
C.wait
D.suspend
三、简述题
1•简述程序、进程和线程之间的关系?
什么是多线程程序?
答:
多线程是多个线程同时在执行。
这些线程的执行是并发的,在逻辑上是同时进行,各个线程的控制流彼此独立。
2•线程有哪几个基本状态?
它们之间如何转化?
简述线程的生命周期。
答:
新生状态一就绪状态一运行状态一等待状态一休眠状态一阻塞状态一死亡状态
使用new创建新线程时,为新生状态;调用已经完成创建的线程中的start方法之前,处于就绪状态;调用start方法之后,处于运行状态;当线程需要获得对象的内置锁,而该锁正被其他线程拥有时,处于阻塞状态;
3.试简述Thread类的子类或实现Runnable接口两
种方法的异同?
答:
classThreadxlextendsThread
classThreadximplementsRunnable
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 多线程 编程 练习题 doc