ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:24.68KB ,
资源ID:11412591      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11412591.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多线程练习题目.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多线程练习题目.docx

1、多线程练习题目多线程练习题目 多 线 程 一、单项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.以上说法无

2、一正确3.哪个关键字可以对对象加互斥锁?( )A.transient B.synchronized C.serialize D.static4.下列哪个方法可用于创建一个可运行的类?()Apublic class X implements Runable public void run() B. public class X implements Thread public void run() C. public class X implements Thread public int run() Dpublic class X implements Runable protected vo

3、id run() 5.下面哪个选项不会直接引起线程停止执行?( )A.从一个同步语句块中退出来 B调用一个对象的wait方法C调用一个输入流对象的read方法D调用一个线程对象的setPriority方法6.使当前线程进入阻塞状态,直到被唤醒的方法是( )A.resume()方法 B.wait()方法 C.suspend()方法 D.notify()方法7.运行下列程序,会产生的结果是( )public class X extends Thread implements Runnable public void run()System.out.println(“this is run()”);

4、public static void main(String args) Thread t=new Thread(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中的线程模型包

5、含( )A.一个虚拟处理机 B.CPU执行的代码 C.代码操作的数据 D.以上都是12.关于线程组以下说法错误的是( )A.在应用程序中线程可以独立存在,不一定要属于某个线程B.一个线程只能创建时设置其线程组C.线程组由java.lang包中的ThreadGroup类实现D.线程组使一组线程可以作为一个对象进行统一处里或维护13.下列定义线程方法正确的是( )A.Public Thread();B.Public Thread(Runnable target);C.Public Thread(ThreadGroup group,Runnable target);D.以上都正确14.以下不属于Th

6、read类提供的线程控制方法是( )A.break() B.sleep() C.yield() D.join()15.下列关于线程的说法正确的是( )A.线程就是进程B.线程在操作系统出现后就产生了C.Soloris是支持线程的操作系统D.在单处理器和多处理器上多个线程不可以并发执行16.下列不属于线程生命周期状态的是( )A. 新建状态 B.可运行状态C. 运行状态 D.解锁状态17.以下不属于Thread类的线程优先级静态常量的是( )A.MIN_PRIORITYB.MAX_PRIORITYC.NORM_PRIORITYD.BEST_PRIORITY18.( )关键字可以对对象加互斥锁。A

7、.synchronized B.transient C.serialize D.static19.下列( )方法和resume()方法相互搭配,使线程停止执行,然后调用resume()方法恢复线程。A.interrupt() B.stop() C.suspend() D.yield()20.Thread类的方法中,getName()方法的作用是( )A.返回线程组的名称 B.设置线程组的名称C.返回线程的名称 D.设置线程的名称21.线程调用了sleep()方法后,该线程将进入( )状态A.可运行状态 B.运行状态 C.阻塞状态 D.终止状态22.下列( )类或接口定义了线程同步与交互的方法。

8、A.Thread B.Runnable C.Object D.ThreadGroup23.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个线程实际上不能并发执行

9、B. 单处理机的计算机上,2个线程实际上能够并发执行C. 一个线程可以包含多个进程D. 一个进程可以包含多个线程27.下列说法中错误的一项是( )A.线程就是程序B.线程是一个程序的单个执行流C.多线程是指一个程序的多个执行流D.多线程用于实现并发28.下列关于Thread类的线程控制方法的说法中错误的一项是( )A.线程可以通过调用sleep()方法使比当前线程优先级的线程运行B.线程可以通过调用yield()方法和当前线程优先级一样的线程运行C.线程sleep()方法调用结束后,该线程进入运行状态D.若没有相同优先级的线程处于可运行状态,县城调用yield()方法时,当前线程将继续执行29

10、.下列程序的输出结果是( )package com.mytest.www;class C6 implements Runnable public void run() for(int a=3;a=10;a+) if(isPrime(a) System.out.print(a+t); public boolean isPrime(int n) boolean b=true; for(int i=2;in-1&b;i+) if(n%i)=0) b=false; return b; public class Test6 public static void main(String args) Thr

11、ead t=new Thread(new C6(); t.start(); A、2 4 6 B、3 5 7 C、3 6 9 D、2 5 830.下列哪一个操作不能使线程从等待阻塞状态进入对象锁阻塞状态?A.等待阻塞状态下的线程被notify()唤醒B.等待阻塞状态下的线程被interrput()中断C.等待时间到D.等待阻塞状态下的进程调用wait()方法 31.下列哪一个方法可以使线程从运行状态进入其他阻塞状态?A. sleep() B. wait() C. yield() D. start()32.下列哪一个不属于Java线程模型的组成部分?A.虚拟的CPUB.虚拟CPU执行的代码C.代码

12、所操作的数据D.执行流33.下列程序的输出结果是( )。public class Test public static void main(String args) new Test(); Test() Test t1 = this; Test t2 = this; synchronized (t1) try t2.wait(); System.out.println(DONE WAITING); catch (InterruptedException e) System.out.println(INTERRUPTED); catch (Exception e) System.out.prin

13、tln(OTHER EXCEPTION); finally System.out.println(FINALLY); System.out.println(ALL DONE); A.输出“ALL DONE”B.输出“INTERRUPTED”C.输出“DONE WAITING”D.编译通过,但是不输出任何字符串34.下列哪一种情况一定不会使当前的 线程暂停执行?( )A.该线程抛出一个InterruptedExceptionB.该线程调用sleep()方法C.该线程创建一个新的子线程D.该线程从输入流读取文件数据35.下列说法中错误的一项是( )A.Java中的每一个线程都属于某个线程组B.线程

14、只能在其创建时设置所属的线程组C.线程创建之后,可以从一个线程组转移到另一个线程组D.新建的线程组默认情况下属于其父线程所属的线程组36.下列不属于线程组成部分的一项是( )A. 程序计数器 B. 堆栈 C. 进程地址空间中的代码 C. 栈指针37.下列关于Java线程模型的说法中,错误的一项是( )A.Java线程模型包括了计算机的CPUB.代码可以与其他线程共享C.数据可以被多个线程共享D.线程模型在java.lang.Thread类中被定义38.下列关于Thread类提供的线程控制方法的说法中,错误的一项是( )A.在线程a中执行线程b的join()方法,则线程a等待直到b执行完成B.线

15、程a通过调用interrupt()方法来中断其阻塞状态C.若线程a调用方法isAlive()返回值为true,则说明a正在执行中D.currentThread()方法返回当前线程的引用39.下面的哪一个关键字通常用来对对象加锁,从而使得对对象的访问是排他的?( )A. serialize B. transient C. synchronized D. static40.下列说法中错误的一项是( )A.可串行化的类必须实现Serializable接口B.可串行化的类中的静态变量可以不被串行化C.private数据访问权限能够限制数据不被串行化D.对象串行化使用Java语言提供的默认机制41.下列

16、说法中正确的一项是( )A.代码和数据是进程的组成部分B.代码和数据是线程的组成部分C.进程是轻型线程D.线程中包含进程42.下列说法中错误的一项是( )A.共享数据的所有访问都必须使用synchronized加锁B.共享数据的访问不一定全部使用synchronized加锁C.所有的对共享数据的访问都是临界区D.临界区必须使用synchronized标识43.下列有关线程的叙述中正确的一项是( )A.一旦一个线程都创建,它就立即开始运行B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行C.当一个线程因为抢占机制而停止运行时,它被放在课运行队列的前面D.一个线程可能因

17、为不同的原因停止并进入终止状态44.下列方法中,不属于Thread类提供的线程控制方法的一个是( )A. sleep() B. interrupt() C. init() D. yield()45.实现Runnable接口创建一个线程的语句是( )Thead t = new Thead (target)Thead t = new Thead ();t.target=targetThead t = new Thead ();T.start(target)Thead t = new Thead ();Trun(target)Thead类定义与下列哪一个包中?( )A. java.io B. jav

18、a.lang C. java.util D. java.awt46.下列说法中,错误的一项是( )A.实现了Runnable接口的类,可以通过extends来继承其他的类B.实现了Runnable接口的类,不能继承其他的类C.Thread类的子类应该是关于CPU行为的类D.Thread类的子类也实现了Runnable接口47.下列是通过实现Runnable接口创建的类,其中正确的一项是( )A. class A3 implements Runnable void run() /B. class A3 extends Runnablepublic void run() /C. class A3

19、implements Runnablepublic void run() /D. class A3 implements Runnable/48.Thread类的常量 NORM_PRIORITY代表的优先级是( )A.最低优先级B.普通优先级C.最高优先级D.不代表任何优先级50.下列哪一个包给出了Runnable接口的定义?( )A. java.util B. java.io C. java.lang D. java.sql二、填空题1.线程模型在Java中是由_类进行定义和描述的。2.多线程是Java程序的_机制,它能共享同步数据,处理不同事件。3.Java的线程调度策略是一种基于优先级的

20、_。4.当线程完成运行并结束后,将不能再运行。除线程正常运行结束外,还可用其他方法控制其停止。可以用_方法强行终止线程。5.如果一个线程处于_态,那么这个线程是不能运行的。6.提供线程体的特定对象是在创建线程时指定的,创建线程对象是通过_类的构造方法实现的。7.在Java中,新建的线程调用start()方法,将使线程的状态从New(新建状态)转换为_。8.按照线程的模型,一个具体的线程是由虚拟的CPU、代码与数据组成,其中代码与数据构成了_,现成的行为由它决定。9.Thread类的方法中,toString()方法的作用是_。10. 线程是一个_级的实体,线程结构驻留在用户空间中,能够被普通的相

21、应级别方法直接访问。11. 线程是由表示程序运行状态的 组成的。12. 在Java线程模型中,一个线程是由 、 和 三部分组成的。13. Thread类中表示最高优先级的常量是 ,而表示最低优先级的常量是 。14. 若要获得一个线程的优先级,可以使用方法 ,若要修改一个线程的优先级,则可以使用方法 。15. 在Java语言中临界区使用关键字 标识。16. 线程的生命周期包括新建状态、 运行状态、 和终止状态。17. Java语言使用 技术对共享数据操作进行并发控制。18. 进程是由 、数据、内核状态和 组成的。19. 在Java线程模型中,数据和代码之间的关系是 的。20. 线程中 方法使执行

22、线程放弃CPU并释放原来持有的对象锁,进入对象的wait等待池中。三、判断题1.一旦一个线程被创建,它就可以立即开始运行( )2.调用start()方法可以使一个线程成为可运行的,但是它并不能立即开始执行( )3.主线程不具有默认优先级( )4.Java中线程的优先级从低到高以整数09表示( )5. 从一个同步语句块中退出来不会直接引起线程停止执行( )6.线程的阻塞是指暂停一个线程的执行以等待某个条件发生( )7.优先级只能在线程启动前设置( )8.当生成守护线程的线程结束时,此守护线程会随之消失( )9.线程之间的通信可以通过共享数据使线程互相交流,也可以通过线程控制方法使线程互相等待(

23、)10.Object类定义了线程同步与交互的方法 ( )11. 线程一旦被创建,则自动运行 ( ) 12. 线程创建后需要调用start()方法,将线程置于可运行状态 ( )13. Thread类中没有定义run()方法 ( )14. 线程开始运行时,是从start()方法开始运行的( ) 15. 一个进程可以创建多个线程 ( )16. 代表优先级的常数值越大优先级越低 ( ) 17. 程序中可能出现一种情况:多个线程相互等待对方持有的锁,而在得到对方的锁之前都不会释放自己的锁,这就是死锁。 ( )18. 临界区可以是一个语句块,但是不可以是一个方法 ( )19. 释放锁的时候,应该按照加锁顺

24、序的逆序进行 ( )20. 在对象串行化中,可以用来保护类中敏感信息的关键字是protected ( )四、简答题(回答要点,并简明扼要作解释)101.什么是线程?它和进程有什么区别? 2.简述线程的生命周期。3.Runnable接口中包括哪些抽象方法?Thread类有哪些主要域和方法?4.创建线程有几种方式?试写出使用这些方式创建线程的一般模式。为什么有时候必须采用其中一种方式?5.简述线程的同步控制机制。6. 创建线程有哪两种方法?7. 什么是死锁?8. 线程有哪三种基本状态?这几种状态是怎样相互转换的?(可画图表示)9. Java语言中的线程包括哪三部分?10. 什么是进程?与线程有何区

25、别?五、程序设计题1.编写一个多线程类,该类的构造方法调用Thread类带字符串参数的构造方法。建立自己的线程名,然后随机生成一个休眠时间,再将自己的线程名和休眠多长时间显示出来。该线程运行后,休眠一段时间,该时间就是在构造方法中生成的时间。最后编写一个测试类,创建多个不同名字的线程,并测试其运行情况。2.编写一个程序,测试异常。该类提供一个输入整数的方法,使用这个方法先输入两个整数,再用第一个整数除以第二个整数,当第二个整数为0时,抛出异常,此时程序要捕获异常。3.编写一个用线程实现一个数字时钟的应用程序。该线程类要采用休眠的方式,把绝对大部分时间让系统使用。4.编写一个使用继承Thread

26、类的方法实现多线程的程序。该类有两个属性,一个字符串代表线程名,一个整数代表该线程要休眠的时间。线程执行时,显示线程名和休眠时间。5.应用继承类Thread的方法实现多线程类,该线程3次休眠若干(随机)毫秒后显示线程名和第几次执行。6.请通过实现Runnable接口和继承Thread类分别创建线程,要求:除了main线程之外,还要创建一个新的线程。Main线程重复100次“main“,新线程重复100次输出“new”。7. 为了使下面的程序能够输出“running”,请在注释处填写相关语句代替注释/A。public class Test implements Runnable public s

27、tatic void main(String args) Test test=new Test(); Thread t=new Thread(test); /A public void run() System.out.println(running); void go() start(1); void start(int i) 8. 在下列程序的横线处填入正确的语句public class Test public static void main(String args) Thread t1 = new subTread(First); Thread t2 = new subTread(Se

28、cond); t1.start(); t2.start(); class subTread extends Thread public subTread(String s) public void run() System.out.println( + getName(); try sleep(int) (Math.random() * 1000); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); System.out.println(结束! + getName(); 9

29、. 请创建一个线程,指定一个限定时间(如60s),线程运行时,大约每3s输出1次当前所剩时间,直至给定的限定时间用完。考点:sleep方法10.以下是一个模拟订票业务的程序。BookingClerk类代表自动售票员,其中包含一个订票(booking)方法。假设一开始有10张票可预定。程序运行时产生两个订票客户同时自动向自动售票员订票。请问会出现什么错误?该如何修改?考点:临界区与互斥public class Test public static void main(String args) BookingClerk bt = new BookingClerk(); new BookingTest(bt, 7); new BookingTest(bt, 5); class BookingClerk int remainder = 10; void booking(i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1