Java语言程序设计复习考试题带答案(三).docx
《Java语言程序设计复习考试题带答案(三).docx》由会员分享,可在线阅读,更多相关《Java语言程序设计复习考试题带答案(三).docx(25页珍藏版)》请在咨信网上搜索。
1、Java语言程序设计基础教程练习思考题参考答案第7章多线程7.1单项选择题1、Java语言具有许多优点和特点,下列选项中,哪个反映了 Java程序并行机制的特点?()A、安全性B、多线程C、跨平台D、可移植解答:B2、Runnable接中的抽象方法是()。A、startB、stopC、yieldD、run解答:D3、有以下程序段(很难)class MyThread extends Thread public static void main(String args) MyThread t = new MyThread();MyThread s = new MyThread();t.start(
2、);System.out.print(one.);s.start();System.out.print(two.);public void run() System.out.print(Thread);则下面正确的选项是()A、编译失败B、程序运行结果为:one.Threadtwo.ThreadC、程序运行结果是:one.two.ThreaThreadD、程序运行结果不确定解答:D5、作为类中新线程的开始点,线程的执行是从下面哪个方法开始的。()A、public void start()B、public void run()C、public void int()D、public static
3、void main(String args)解答:A6、Java中用于给对象加“互斥锁”标记的关键字是。()A、synchronizedB、serializeC、transientD、static解答:A7. 以下哪个方法用于定义线程的执行体?( C )A、 start()B、init()C、run()D、synchronized。8. 以下哪个关键字可以用来为对象加互斥锁?( D )A、transient B、staticC、 serialize D、 synchronized7.2填空题7.3简答题1、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?多线程有两种实现方法,分别
4、是继承Thread类与实现Runnable接。用Thread类的 子类创建线程对象,也就是从Thread类继承。实现Runnable接,用Thread类直接创建 线程对象。同步的实现方面有两种,分别是synchronized wait与notify2、创建一个新线程的方法,可以使用下面哪2种(A、继承java.lang.ThreO!,并且重载run方法。B、继承 java.lang.Runnab粪,并且重载 star方法。C、实现java.lang.thre类d实现run方法。D、实现 java.lang.Runnab接,实现 run方法。E、实现 java.lang.ThreOd,实现 st
5、ar方法。解答:A,D3、线程在它的一个完整的生命周期中有哪4种状态?解答1:线程在它的一个完整的生命周期中通常要经历如下的4种状态:1.创建状态(new Thread) 2.可运行状态(Runnable )不可运行状态(Not Runnabl)4.死亡状态(Dead)解答2:第一是创建状态。在生成线程对象,并没有调用该对象的star方法,这是线程处于创 建状态。第二是就绪状态。当调用了线程对象的star方法之后,该线程就进入了就绪状态,但 是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之 后,从等待或者睡眠中回来之后,也会处于就绪状态。第三是运行状态。线程调度程
6、序将处于就绪状态的线程设置为当前线程,此时线程就 进入了运行状态,开始运行run函数当中的代码。第四是阻塞状态。线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比 如说某项资源就绪)之后再继续运行。sleep,suspendwait等方法都可以导致线程阻塞。第五是死亡状态。如果一个线程的run方法执行结束或者调用stop方法后,该线程就 会死亡。对于已经死亡的线程,无法再使用star方法令其进入就绪。4、线程在什么状态时,调用isAlive方法返回的值是false5、建立线程有哪两种方法?解答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接。6、怎样设置线程的
7、优先级?7、调用Thread类的什么方法可以启动一个线程?直接调用Thread类的run(方法可以 启动一个线程吗?解答:线程调用start方法将启动线程,从新建状态进入就绪队列排队。不能直接调用 Thread类的run(方法可以启动一个线程,我们调用了 Thread的run(方法,它的行为就会和 普通的方法调用一样。8、Thread类中的start (和 run ()方法有什么区别?解答:这个问题经常被问到,但还是能从此区分出面试者对Java线程模型的理解程度。 start方法被用来启动新创建的线程,而且start内部调用了 run(方法,这和直接调用run() 方法的效果不一样。当你调用r
8、un(方法的时候,只会是在原来的线程中调用,没有新的线 程启动,start方法才会启动新线程。9、进程和线程的区别?解答:进程=执行中的程序,每个进程都有自己独立的一块内存、一组系统资源。每一 个进程的内部数据和状态都是完全独立的。线程=进程中单个顺序的流控制,同类的多个线程共享一块内存、一组系统资源。线程 的运行开销很小。一个线程是进程的一个执行流程,一个进程可以同时包含多个线程。10、现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执 行完后执行?解答:在T2线程的run(方法中加入代码T1.join在T3线程的run(方法中加入代码 T2.join或者在主线程
9、main (方法中,t1.start();try t1.join(); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();t2.start();try t2.join(); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();t3.start();11、Thread.start()Thread.run有什么区别?解答:通过调用Thead类的start方法来启动一个
10、线程,使之进入就绪状态,当cpu 分配时间该线程时,由JVM调度执行run(方法。直接使用run(方法叫做方法调用,不能 启动线程。12、在一个对象上两个线程可以调用两个不同的同步实例方法吗?解答:不能,因为一个对象已经同步了实例方法,线程获取了对象的对象锁。所以只 有执行完该方法释放对象锁后才能执行其它同步方法。13、当一个同步方法已经执行,线程能够调用对象上的非同步实例方法吗?解答:可以,一个非同步方法总是可以被调用而不会有任何问题。实际上,Java没有 为非同步方法做任何检查,锁对象仅仅在同步方法或者同步代码块中检查。如果一个方法 没有声明为同步,即使你在使用共享数据Java照样会调用,
11、而不会做检查是否安全,所以 在这种情况下要特别小心。一个方法是否声明为同步取决于临界区访问(critiaction access如果方法不访问临界区共享资源或者数据结构)就没必要声明为同步的。14、wait方法的作用?解答:wait方法用在synchronized方法或者synchronize块中。一般在判断语句中, 如果某条件被触发,让当前线程wait并释放对象的锁。此时可以让其他线程可以对用以对 象调用synchronize方法。直到调用notif或者notifyAl后wait的线程才有可能执行。所 以一般wait和notify是成对出现的。15、启动一个线程是用run(还是start,(
12、)调用的时候有什么区别?(同第8题)解答:当然是start了),当调用线程的start方法的时候,线程就会进入到就绪状态。 run(方法是线程的执行入,当线程从就绪状态进入到执行状态时首先要从run(方法开始 执行。当然,我们也是可以直接通过线程对象调用该对象的run(方法的,只是这只是一次普 通的调用,并没有启动任何一个线程。当我们调用start方法时,是另外启动了一个线程去执行线程类的代码,并不影响主程 序的执行,但是调用run(方法的时候要等待run(方法内的代码执行完主程序才可以向下执 行16、sleep(和 wait()有什么区别?解答:sleep是线程类(Thread)的方法,导致
13、此线程暂停执行指定时间,给执行机会 给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait 是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等 待锁定池,只有针对此对象发出notify方法(或notifyAl)l后本线程才进入对象锁定池准备 获得对象锁进入运行状态。7.4综合题14、编写一个死锁程序?15、在下面的代码区填入相应的代码,实现以下功能:通过继承Thread类的子类Threadl,来创建和启动一个线程tl;通过实现Runnable接的具体类Runner1,来创建和启动一个线程t2;public class T
14、estThread1public static void main(String args)/创建和启动一个线程t1,在下面写出相应代码 Thread1 t1 =new Thread1 () ;t1.start() ;/创建和启动一个线程t2在下面写出相应代码Runner1 r1 =new Runner1() ;Thread t2 =new Thread(r1) ;t2.start() ;for(int i=0;i1;i+)System.out.println(Main Thread:+ i);class Runner1 implements Runnablepublic void run()
15、for(int i=0;i1;i+)System.out.println(Runner1:+i);class Thread1 extends Threadpublic void run()for(int i=0;i1;i+)System.out.println(Thread1:+i);16、现在有T1 T2 T3三个线程,怎样保证T2在T1执行完之后执行T3在T2执行完 之后执行。请在相应区域写出实现该功能的代码。public class JoinDemo public static void main(String args) T1 t1=new T1(T1);T2 t2=new T2(T2
16、);T3 t3=new T3(T3);t1.start();try t1.join(); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace();t2.start();try t2.join(); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace();t3.start();class T1 extendThreadprivate String name;public
17、T1(String name) this.name=name;public void run()(for(int i=0;i5;i+) try sleep(5); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace();System.out.println(this.n 循环 + i);class T2 extendThreadprivate String name;public T2(String name) this.name=name;public void run()(fo
18、r(int i=0;i5;i+) try sleep(5); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace();System.out.println(this.n 循环 + i);class T3 extendThread(private String name;public T3(String name) this.name=name;public void run()(for(int i=0;i5;i+)System.out.println(this.n 循环 + i);
19、第8章文件和流8.1单项选择题1、创建一个向文件“file. ”x追加内容的输出流对象的语句是()。A. OutputStream out=new FileOutputStream(file.txt”);B. OutputStream out=new FileOutputStream(file.txt”, “append”);C. FileOutputStream out=new FileOutputStream(fiUe)txt”, trD. FileOutputStream out=new FileOutputStream(new file(file.txt”); 解答:C2、下面哪个流类
20、属于面向字符的输入流()A BufferedWriterB FileInputStreamC ObjectInputStreamD InputStreamReader答案:D3、以下关于File类说法错误的是(D)A. 一个File对象代表了操作系统中的一个文件或者文件夹B. 可以使用File对象创建和删除一个文件C. 可以使用File对象创建和删除一个文件夹D. 当一个File对象被垃圾回收时,系统上对应的文件或文件夹也被删除4、为了提高读写性能,可以采用什么流? ( D )A InputStreamB DataInputStreamC OutputStreamD BufferedInput
21、Stream5、File类型中定义了什么方法来判断一个文件是否存在?( D )A createNewFileB renameToC deleteD exists6、File类型中定义了什么方法来创建多级目录? ( C )A createNewFileB existsC mkdirsD mkdir7、(Buffered流,缓冲区)有下面代码 import java.io.*;public class TestBufferedWriterpublic static void main(String args) throws Exception(FileWriter fw = new FileWri
22、ter(test.txt”);BufferedWriter bw = new BufferedWriter(fw);String str = “Hello World”;bw.write(str) 在处放入什么代码,能够使得test.tx文件被正确写入?A. bw.close() B. bw.flush(); C. fw.close();8.2填空题1、 对于FileInputStrea来说,从方向上来分,它是输入流,从数据单位上分,它是一字节_流。2、创建FileOutputStreai对象时,如果对应的文件在硬盘上不存在,则会_自动创建_;如果对应的文件在硬盘上已经存在,则覆盖8.3简答题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言程序设计 复习 考试题 答案
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。