【计算机类职业资格】线程及答案解析.doc
《【计算机类职业资格】线程及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】线程及答案解析.doc(12页珍藏版)》请在麦多课文档分享上搜索。
1、线程及答案解析(总分:48.00,做题时间:90 分钟)一、选择题(总题数:16,分数:32.00)1.下面程序中需要对 Employee的对象进行存储,请在下画线处填入正确选项_。class Emloyee implements_(分数:2.00)A.ComparableB.SerializableC.CloneableD.DataInput2.线程在生命周期中要经历 5种状态。如果线程当前是新建状态,则它可到达的下一个状态是_。(分数:2.00)A.运行状态B.阻塞状态C.可运行状态D.终止状态3.线程生命周期中正确的状态是_。(分数:2.00)A.新建状态、运行状态和终止状态B.新建状态
2、、运行状态、阻塞状态和终止状态C.新建状态、可运行状态、运行状态、阻塞状态和终止状态D.新建状态、可运行状态、运行状态、恢复状态和终止状态4.下列关于 Java多线程并发控制机制的叙述中,错误的是_。(分数:2.00)A.Java中对共享数据操作的并发控制是采用加锁技术B.线程之间的交互,提倡采用 suspend()/resume()方法C.共享数据的访问权限都必须定义为 privateD.Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生5.下列叙述中,错误的是_。(分数:2.00)A.Java中没有检测和避免死锁的专门机制B.程序中多个线程互相等侍对方持
3、有的锁,可能形成死锁C.为避免死锁,Java 程序中可先定义获得锁的顺序,解锁是按加锁的反序释放D.为避免死锁,Java 程中可先定义获得锁的顺序,解锁是按加锁的正序释放6.如果线程正处于运行状态,可使该线程进入阻塞状态的方法是_。(分数:2.00)A.yield()B.start()C.wait()D.notify()7.请阅读下面程序public class ThreadTestpublic static void inain(String args) throws Exceptionint i=0;Hello t=new Hello();_;while(true)System.out.p
4、rintIn (“Good Morning“+j+);if(i=2LisAlive()System.out.printIn(“Main waiting for Hello!“);T.join();/等待 t运行结束if(i=5)break;class Hello extends Threadint i ;public void run()while(true)System.out.printIn(“Hello“+i+);if(i=5) break;为使该程序正确执行,下画线处的语句应是_。(分数:2.00)A.sleep()B.yield()C.interrupt()D.start()8.阅读
5、下面程序1 public class Try extends Thread2 Public static void main (String args)3 Try t=new Try();4 t.start();5 67 Public void run (int j) 8 int i=0;9 while (i5)10 System.out.printIn(“祝你成功!“);11 i+;12 13 14 该程序要求打印 5行“祝你成功!“,必须改正程序中的某行代码,程序才能完成,选择正确的修改是_。(分数:2.00)A.将第 1行的 extends Thread改为 implements Run
6、nableB.将第 3行的 new Try()改为 new Thread()C.将第 4行的 t.start()改为 start(t)D.将第 7行的 public void run(int j)改为 public void run()9.可以使当前同级线程重新获得运行机会的方法是_。(分数:2.00)A.sleep()B.join()C.yield()D.interrupt()10.如果使用 Thread t=new Test()语句创建一个线程,则下列叙述正确的是_。(分数:2.00)A.Test类一定要实现 Runnable接口B.Test类一定是 Thread类的子类C.Test类一定
7、是 Runnable类的子类D.Test类一定是继承 Thread类并且实现 Runnable接口11.请阅读下面程序public class ThreadTest public static vodi main(Sting args)Thread t1=new Thread(new Hello();Thread t2=new Thread(new Hello();t1.start();t2.start();class Hello implements Runnableint i;public void run()while (true)System.out.printIn(“Hello“+i
8、+);if(i=5) break;该程序创建线程使用的方法是_。(分数:2.00)A.继承 Thread类B.实现 Runnable接口C.t1.start()D.t2.start()12.下列方法中,声明抛出 InterruptedException异常的方法是_。(分数:2.00)A.suspend()B.resume()C.sleep()D.start()13.下列关于 Java语言中线程的叙述中,正确的是_。(分数:2.00)A.线程是由代码、数据、内核状态和一组寄存器组成的B.线程间的数据是不共享的C.用户只能通过创建 Thread类的实例或定义,创建 Thread子类的实例建立和控
9、制自己的线程D.因多线程并发执行而引起的执行顺序的不稳定性可能造成执行结果的不稳定14.Thread类中能运行线程体的方法是_。(分数:2.00)A.start()B.resume()C.init()D.run()15.阅读下面程序class Test implements Runnable public static void main (String args)Test t=new Test();t.start();public void run()下列关于上述程序的叙述正确的是_。(分数:2.00)A.程序不能通过编译,因为 start()方法在 Test类中没有定义B.程序编译通过,但
10、运行时出错,提示 start()方法没有定义C.程序不能通过编译,因为 run()方法没有定义方法体D.程序编译通过,且运行正常16.下列叙述中,正确的是_。(分数:2.00)A.线程与进程在概念上是不相关的B.一个线程可包含多个进程C.一个进程可包含多个线程D.Java中的线程没有优先级二、填空题(总题数:8,分数:16.00)17.Java中的线程体是由线程类的 1 方法进行定义的,线程运行时,也是从该方法开始执行。(分数:2.00)填空项 1:_18.Java中线程模型由虚拟的 CPU,代码与数据构成。该模型是由 java.lang. 1类进行定义和描述的。(分数:2.00)填空项 1:
11、_19.在 Java线程中,共享数据的所有访问都必须作为临界区,使用 1 进行加锁控制。(分数:2.00)填空项 1:_20.在 Java程序中,主线程一般具有 1 优先级。(分数:2.00)填空项 1:_21.当实现 Runnable接口时,要实现的方法是 1。(分数:2.00)填空项 1:_22.在 Java中,线程的模型就是一个 CPU、程序代码和 1 的封装体。(分数:2.00)填空项 1:_23.下列程序的功能是创建了一个显示 5个“Hello!”的线程并启动运行,请将程序补充完整。public class ThreadTest extends Thread public stati
12、c void main (String args)ThreadTest t=new_;t.start();public void run()int i=0;while(true)System.out.printIn( “Hello!“);if (i+=4)break;(分数:2.00)填空项 1:_24.Java对象串行化技术,主要是通过 1 类和 ObjectOutputStream类来实现。(分数:2.00)填空项 1:_线程答案解析(总分:48.00,做题时间:90 分钟)一、选择题(总题数:16,分数:32.00)1.下面程序中需要对 Employee的对象进行存储,请在下画线处填入正
13、确选项_。class Emloyee implements_(分数:2.00)A.ComparableB.Serializable C.CloneableD.DataInput解析:解析 要对对象进行存储,首先要将对象串行化。一个类只有实现了 Serializable接口,它的对象才是串行化的。因此如果要串行化某些类的对象,这些类就必须实现 Serializable接口。故本题的正确选项是 B。2.线程在生命周期中要经历 5种状态。如果线程当前是新建状态,则它可到达的下一个状态是_。(分数:2.00)A.运行状态B.阻塞状态C.可运行状态 D.终止状态解析:解析 线程一旦开始,就开始了它的生命
14、周期。线程的声明周期主要分为:新建状态(New),线程创建后处于该状态;可运行状态(Runnable),新建的线程调用 start()方法,使线程的状态从 New变为Runnable,所以选项 C正确;运行状态(Running),运行状态使线程占有 CPU并实际运行的状态;阻塞状态(Blocked),导致该状态的原因很多。需要注意区别的是:终止状态(Dead)是线程执行结束的状态,没有任何方法可以改变它的状态。3.线程生命周期中正确的状态是_。(分数:2.00)A.新建状态、运行状态和终止状态B.新建状态、运行状态、阻塞状态和终止状态C.新建状态、可运行状态、运行状态、阻塞状态和终止状态 D.
15、新建状态、可运行状态、运行状态、恢复状态和终止状态解析:解析 线程生命周期中出现的状态有:新建状态、可运行状态、运行状态、阻塞状态和终止状态。其中阻塞状态又分为对象锁阻塞、等待阻塞和其他阻塞。所以 C项的说法正确。4.下列关于 Java多线程并发控制机制的叙述中,错误的是_。(分数:2.00)A.Java中对共享数据操作的并发控制是采用加锁技术B.线程之间的交互,提倡采用 suspend()/resume()方法 C.共享数据的访问权限都必须定义为 privateD.Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生解析:解析 线程之间的交互,提倡采用 wa
16、it()和 notify()方法,这两个方法是 java.lang.object类的方法,是实现线程通信的两个方法,不提倡使用 suspent()和 resume()方法,它们容易造成死锁,所以选项 B的说法是错误的。5.下列叙述中,错误的是_。(分数:2.00)A.Java中没有检测和避免死锁的专门机制B.程序中多个线程互相等侍对方持有的锁,可能形成死锁C.为避免死锁,Java 程序中可先定义获得锁的顺序,解锁是按加锁的反序释放D.为避免死锁,Java 程中可先定义获得锁的顺序,解锁是按加锁的正序释放 解析:解析 Java 中没有检测与避免死锁的专门机制。应用程序可以采用一般的做法是:如果程
17、序要访问多个共享数据,则要首先从全局考虑定义一个获得锁的顺序,并且在整个程序中都遵守这个顺序。释放时,要按加锁的反序释放。所以 D项说法不正确。6.如果线程正处于运行状态,可使该线程进入阻塞状态的方法是_。(分数:2.00)A.yield()B.start()C.wait() D.notify()解析:解析 如果发生下面几种情况时,处于运行状态的线程就进入阻塞状态:线程调用了 sleep()方法、join()方法时:线程调用 wait()方法时;如果线程中使用 synchronized来请求对象的锁未获得时;如果线程中有输入/输出操作,则将进入阻塞状态,待输入/输出操作结束后,线程进入可运行状
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 线程 答案 解析 DOC
