Java程序设计案例教程 第2版 习题答案 习题12_第1页
Java程序设计案例教程 第2版 习题答案 习题12_第2页
Java程序设计案例教程 第2版 习题答案 习题12_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE1【习题12】一、选择题CAADA二、填空题1、进程2、线程3、继承Thread类实现Runnable接口4、可运行运行阻塞5、wait()notify()三、简答题1、简述进程和线程的概念。答:进程是一个包含自身执行地址的程序,现在的计算机基本上都支持多进程操作。在一个进程内部也可以执行多任务,可以将进程内部的任务称为线程,线程是进程中的实体,一个进程可拥有多个线程。2、简述创建线程的两种方法的实现步骤。答:继承Thread类的实现步骤如下:将需要实现多线程的类声明为继承Thread类,覆盖其run()方法,并将线程体放在该方法里。publicclassMyThreadextendsThread{ publicvoidrun(){ //线程体 }}创建一个该类的实例。MyThreadt=newMyThread();启动该实例。t.start();实现Runnable接口的实现步骤如下:将需要实现多线程的类声明为实现Runnable接口的类,实现run()方法,并将线程体放在该方法里。publicclassMyRunnableimplementsRunnable{ publicvoidrun(){ //线程体 }}创建一个该类的实例。Runnabler=newMyRunnable();从该实例创建一个Thread实例。Threadt=newThread(r);启动该Thread的实例。t.start();也可将上述二行合并:newThread(r).start();3、简述创建线程的两种方法的异同点。答:表1两种方法的比较继承Thread类实现Runnable接口相同每个具有多线程能力的类都必须覆盖(继承Thread类时)或实现(实现Runnable接口时)run()方法。启动一个线程是通过调用Thread实例的start()方法实现的。如果是实现Runnable接口时,需通过Thread的构造方法创建一个Thread实例。不同不能再继承其它类。可以继承其它类。编写简单,无需再创建创建线程类。编写复杂一些,必须通过Thread类构造方法,创建一个新的Thread类。程序结构清晰,程序风格好。4、简述线程的几种状态。答:1、新建状态当一个Thread类的对象被创建(new)之后,一个新的线程就产生了。在这个线程执行start()方法之前,它处于新建状态。2、可执行状态一个线程被创建后,没有立即进入运行状态,而是处于处理就绪状态。通过调用Thread类中的start()方法实现执行run()方法。3、运行状态运行状态(Running)是线程的正常执行状态,即在CPU中执行run()方法的代码。4、阻塞状态由于某种原因,线程不能执行,即使CPU是空闲的。线程阻塞解除后,线程进入可执行状态,再次等待调度,以获得CPU时间。5、结束状态结束状态(Terminated)是线程正常执行完成(从run()方法中返回)或线程被中止。这时释放线程占用的资源,结束线程的执行。5、简述实现线程同步的两种方法。答:(1)对方法进行同步在定义方法时加上synchronized的关键字:(2)对语句块进行同步在需要同步的代码块前加上关键字synchronized(其中this是指类自身)四、编程题1、三个学生小张、小李和小王在打篮球,先编写一程序,模拟他们抢篮球的过程,每人抢到5次就算结束,余下的人继续玩。先要求输出每人抢球的记录。输出的例子如下:小李第1次抢到篮球小张第1次抢到篮球小王第1次抢到篮球小张第2次抢到篮球小张第3次抢到篮球小王第2次抢到篮球小李第2次抢到篮球小王第3次抢到篮球小张第4次抢到篮球小李第3次抢到篮球小李第4次抢到篮球小张第5次抢到篮球小李第5次抢到篮球小李不想玩了。小王第4次抢到篮球小王第5次抢到篮球小张不想玩了。小王不想玩了。classBoyimplementsRunnable{ Stringname; publicBoy(Stringname){ =name; } publicvoidrun(){ for(inti=0;i<5;i++){ System.out.println(name+"第"+(i+1)+"次抢到篮球"); try{ Thread.sleep((int)(1000*Math.random())); }catch(Exceptione){} } System.out.println(name+"不想玩了。"); }}publicclassPlayBasketball{ publicstaticvoidmain(String[]args){ Boyboy1=newBoy("小李"); Boyboy2=newBoy("小张"); Boyboy3=newBoy("小王"); Threadt1=newThread(b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论