线程输入输出与集合练习题.docx
《线程输入输出与集合练习题.docx》由会员分享,可在线阅读,更多相关《线程输入输出与集合练习题.docx(20页珍藏版)》请在冰豆网上搜索。
线程输入输出与集合练习题
线程、输入输出与集合练习题
1、以下哪个方法是正确的启动新线程的方法?
请选出1个正确的答案。
(a)只须创建新线程对象,新线程会自动启动。
(b)创建新线程对象并调用方法begin()。
(c)创建新线程对象并调用方法start()。
(d)创建新线程对象并调用方法run()。
(e)创建新线程对象并调用方法resume()。
2、扩展Thread类以提供线程的行为时,应重载哪个方法?
请选择1个正确的答案。
(a)begin()
(b)start()
(c)run()
(d)resume()
(e)behavior()
3、下列说法中哪些是正确的?
请选出两上正确的答案。
(a)Thread类为抽象类。
(b)Thread类实现Runnable。
(c)实现Runnable接口的类必须定义一个名为star的方法。
(d)实现Runnable的对象调用run()方法将创建一个新线程。
(e)当最后一个非守护线形程结束时,程序将终止。
4、如果编译并运行以下程序,将会出现什么结果?
publicclassMyClassextendsThread{
publicMyClass(Strings){msg=s;}
Stringmsg;
publicvoidrun(){
System.out.println(msg);
}
publicstaticvoidmain(String[]args){
newMyClass(“Hello”);
newMyClass(”World”);
}
}
请选择1个正确的答案。
(a)程序不能通过编译。
(b)程序顺利通过编译,每次运行时依次的印出Hello和World。
(c)程序通过编译并打印一个永不结束的Hello和World字符流。
(d)程序通过编译,运行时打印Hello和World,但顺序不可预测。
(e)程序通过编译,运行时不输出任何内容并终止。
5、根据以下程序进行判断,哪些说法是正确的?
publicclassThreadedprint{
staticThreadmakeThread(finalStringid,booleandaemon){
Threadt=newThread(id){
publicvoidrun(){
System.out.println(id);
}
};
t.setDaemon(daemon);
t.start();
returnt;
}
publicstaticvoidmain(String[]args){
Threada=makeThread(“A”,false);
Threadb=makeThread(“B”,true);
System.out.print(“End\n”);
}
}
请选择两上正确的答案。
(a)总是打印字符A。
(b)总是打印字符B。
(c)从不在End之后打印A
(d)从不在End之后打印B
(e)程序可能依次打印B、End和A
6、根据以下程序判断哪些说法是正确的?
publicclassMyClassextendsThread{
staticObjectlock1=newObject();
staticObjectlock2=newObject();
staticvolatileinti1,i2,j1,j2,k1,k2;
publicvoidrun(){while(true){doit();check();}}
voiddoit(){
synchronized(lock1){i1++;}
j1++;
synchronized(lock2){k1++;k2++;}
j2++;
synchronized(lock1){i2++;}
}
voidcheck(){
if(i1!
=i2)System.out.println(“i”);
if(j1!
=j2)System.out.println(“j”);
if(k1!
=k2)System.out.println(“k”);
}
publicstaticvoidmain(String[]args){
newMyClass().start();
newMyClass().start();
}
}
选择1个正确的答案。
(a)程序不能通过编译。
(b)在执行过程不能确定打印字母i、j和k中的哪一个字母。
(c)在执行过程中不会打印字母i、j和k中的任何字母。
(d)在执行过程中不会打字母i和k。
(e)在执行过程中不会打印字母k。
7、下面哪些事件将导致致线程死亡?
请选择1个正确的答案。
(a)sleep()方法被调用
(b)wait()方法被调用
(c)start()方法执行结束
(d)run()方法执行结束
(e)线程的构造函数执行结束
8、对于以下代码,哪些说法是正确的?
publicclassJoining{
staticThreadcreateThread(finalinti,finalThreadt1){
Threadt2=newThread(){
publicvoidrun(){
System.out.println(i+1);
try{
t1.join();
}catch(InterruptedExceptione){
}
System.out.println(i+2);
}};
System.out.println(i+3);
t2.start();
System.out.println(i+4);
returnt2;
}
publicstaticvoidmain(String[]args){
createThread(10,createThread(20,Thread.currentThread()));
}
}
请选出两个正确的答案。
(a)首先打印的数字是13
(b)在数字22之前打印数字14
(c)在数字21之前打印数字24
(d)最后打印的数字是12
(e)在数字23之前打印数字11
9、如何设置线程的优先级?
选择1个正确的答案。
(a)通过使用Thread类中的setPriority()方法。
(b)通过将优先级作为传递给线程的构造函数。
(c)以上两种方法都可以
(d)以上两种方法都不对。
10、关于锁定,哪些说法是正确的?
请选择两个正确的答案。
(a)线程一次可以获得多个锁定
(b)在Thread对象上调用wait()方法将释放线程所有的锁定
(c)在对象(当前线程具有其锁定)上调用wait( )方法将释放锁定
(d)在对象(当前线程具有其锁定)上调用notify()方法将释放锁定
(e)多个线程可以同时获得同一锁定
11、如果不能确保当前线程获得对象的锁定就调用wait()方法,将会产生什么后果?
请选择1个正确的答案。
(a)代码不能通过编译
(b)什么也不会发生
(c)如果当前线程没有获得对象的锁定就调用wait()方法,将抛出一个IllegalMonitorStateException
(d)线程被阴塞,直到它获得对象的锁定
12、线程可能处于活动状态但是仍不处于运行状态,这是因为哪些原因?
请选择4个正确的答案。
(a)调用wait()方法后,线程等待条件得到满足。
(b)run( )方法执行结束。
(c)为了在线程上执行方法,线程等待获得对象锁定。
(d)线程没有最高的优先级而且当前没有运行。
(e)调用sleep()方法导致线程进入休眠状态
13、通过代码Threadt=newThread(targetObject);判断下列描述哪个是最合适的?
A.targetObjectinstanceofThread.
B.tagetObjectinstanceofObject
C.targetObjectinstanceofApplet
D.targetObjectinstanceofRunnable
E.targetObjectinstanceofString
14、如果线程调用了wait()方法进入等待状态后,下列方法哪些可以使他继续运行?
A.join()
B.resume()
C.notify()
D.notifyAll()
15、下列描述哪些方法可以定义一个新的线程类?
A.实现Runnable接口
B.在类里定义一个叫run()的方法
C.创建一个Thread的实例
D.继承Thread类
16、下列哪些代码段可以写在下面代码的注释语句之后以实现从startHere到endHere循环输出?
classTest{
publicintstartHere=1;
publicintendHere=100;
publicstaticvoidmain(String[]args){
newTest().go();
}
voidgo(){
//A
Threadt=newThread(a);
t.start();
}
}
A.Runnablea=newRunnable(){
publicvoidrun(){
for(inti=startHere;i<=endHere;i++){
System.out.println(i);
}
}
};
B.implementsRunnable{
publicvoidrun(){
for(inti=startHere;i<=endHere;i++){
System.out.println(i);
}
}
};
C.Threada=newThread(){
publicvoidrun(){
for(inti=startHere;i<=endHere;i++){
System.out.println(i);
}
}
};
17、试图编译并运行下面代码会得到什么结果?
classTestimplementsRunnable{
inti=0;
publicintrun(){
while(true){
i++;
System.out.println(“i=”+i);
}//Endwhile
return1;
}
}
A.编译通过,run方法将打印递增的i值
B.编译通过,调用start方法后会打印递增的i值
C.编译错误
D.编译错误,因为不能直接给true为while的参数。
18、试图编译并运行下面代码会得到什么结果?
publicclassTestextendsThread{
publicstaticvoidmain(Stringargv[]){
Testb=newTest();
b.run();
}
publicvoidstart(){
for(inti=0;i<10;i++){
System.out.println(“Valueofi=”+i);
}
}
}
A.编译错误,因为没有定义run方法
B.运行是错误,因为没有定义run方法
C.编译通过,并输出Valueofi=0-9的值
D.编译通过,没有任何东西输出
19、下列哪些方法是Thread类里定义的?
A.yield()
B.sleep(longmsec)
C.go()
D.stop()
20、下列catch语句哪些可以可以放在下面代码的XXX位置?
classTestimplementsRunnable{
publicvoidrun(){
System.out.println(“Executingrun()method”);
myTest();
}
publicsynchronizedvoidmyTest(){
try{
wait(-1000);
System.out.println(“ExecutingthemyTest()method”);
}XXX
}
}
publicclassMyTest{
publicstaticvoidmain(Stringargs[]){
Testt=newTest();
Threadth=newThread(t);
th.start();
}
}
Selecttheonerightanswer.
A.catch(InterruptedExceptionie){}
B.catch(IllegalArgumentExceptionil){}
C.catch(IllegalMonitorStateExceptionim){}
21、试图编译并运行下面代码会得到什么结果?
1:
publicclassTestextendsThread
2:
{
3:
publicvoidrun()
4:
{
5:
System.out.println(“Beforestartmethod“);
6:
this.stop();
7:
System.out.println(“Afterstopmethod”);
8:
}
9:
10:
publicstaticvoidmain(String[]args)
11.{
12.Testa=newTest();
13.a.start();
14.}
15:
}
A.在第七行编译错误
B.在第七行运行时错误
C.打印Beforestartmethod和Afterstopmethod
D.打印Beforestartmethod
22、如果在电脑的c:
\source目录下运行下面代码会输出什么结果?
importjava.io.*;
classTest{
publicstaticvoidmain(String[]args)throwsException{
Filefile=newFile(“Ran.test”);
System.out.println(file.getAbsolutePath());
}
}
A.Ran.test
B.source\Ran.test
C.c:
\source\Ran.test
D.c:
\cource
E.null
23、如果“Ran.test”文件不存在,你试图编译并运行下面代码会得到什么结果?
importjava.io.*;
classTest{
publicstaticvoidmain(String[]args)
throwsIOException{
RandomAccessFileout=
newRandomAccessFile(“Ran.test”,“rw”);
out.writeBytes(“Ninotchka”);
}
}
A.编译错误,因为RandomAccessFile不能正确的被创建。
B.编译错误,因为RandomAccessFile不能执行writeBytes()方法。
C.编译通过,但运行时抛出IOException异常,因为“Ran.test”不存在。
D.编译通过并运行,“Ran.test”被创建,但“Ran.test”文件里什么也没有。
E.编译通过并运行,“Ran.test”被创建,“Ran.test”文件里有字符串“Ninotchka”。
24、RandomAccessFile对象拥有哪些合法的访问模式?
A.“w”
B.“r”
C.“x”
D.“rw”
E.“xrw”
25、下面代码断可以实现什么功能?
Filef=newFile(“hello.test”);
FileOutputStreamout=newFileOutputStream(f);
A.如果“hello.test”文件不存在就创建它,你可以对它进行读写操作。
B.如果“hello.test”文件不存在就创建它,你不可以对它进行任何操作。
C.你可以对以存在的“hello.test”文件进行读写操作,但是如果“hello.test”文件不存在不会创建“hello.test”文件。
D.你可以对以存在的“hello.test”文件进行写操作,不能进行读操作,并且如果“hello.test”文件不存在不会创建“hello.test”文件。
26、下列代码段那个可以写在下面代码的注释部分以实现向“temp.test”文件里写入0-9的整数?
importjava.io.*;
classWrite{
publicstaticvoidmain(String[]args)throwsException{
Filefile=newFile(“temp.test”);
FileOutputStreamstream=
newFileOutputStream(file);
//writeintegershere…
}
}
A.DataOutputStreamfilter=newDataOutputStream(stream);
for(inti=0;i<10,i++)
filter.writeInt(i);
B.for(inti=0;i<10;i++)
file.writeInt(i);
C.for(inti=0;i<10;i++)
stream.writeInt(i);
D.DataOutputStreamfilter=newDataOutputStream(stream);
for(inti=0;i<10;i++)
filter.write(i);
E.for(inti=0;i<10;i++)
stream.write(i);
27、下列哪些类是用于处理Unicode(统一字符编码)的输入输出流?
A.InputStreamReader
B.BufferedReader
C.Writer
D.PipedInputStream
28、试图编译并运行下面代码将得到什么结果?
(注:
当前目录下没有叫Hello.txt的文件)
importjava.io.*;
publicclassTest{
publicstaticvoidmain(Stringargv[]){
Testm=newTest();
System.out.println(m.amethod());
}
publicintamethod(){
try{
FileInputStreamdis=
newFileInputStream(“Hello.txt”);
}catch(FileNotFoundExceptionfne){
System.out.println(“Nosuchfilefound”);
return-1;
}catch(IOExceptionioe){
}finally{
System.out.println(“Doingfinally”);
}
return0;
}}
A.Nosuchfilefound
B.Nosuchfilefound,-1
C.Nosuchfilefound,Doingfinally,-1
D.0
29、下面哪些是集合框架中的核心接口?
请选出3个正确的答案。
(a)Set
(b)Bag
(c)LinkedList
(d)Collection
(e)Map
30、下面那些实现是由java.util包提供的?
请选出两个正确的答案。
(a)HashList
(b)HashMap
(c)ArraySet
(d)ArrayMap
(e)TreeMap
31、有些集合按序存放非惟一元素,用于表示这些集合的接口名字是什么?
请选出1个正确的答案。
(a)Collection
(b)Set
(c)SortedSet
(d)List
(e)Sequence
32、这些方法中哪些是在Collection接口中定义的?
请选出3个正确的答案。
(a)add(Objecto)
(b)retainAll(Collectionc)
(c)get(intindex)
(d)iterator()
(e)indexOf(Objecto)
33、运行如下程序进的输出是什么?
importjava.util.*;
publicclassIterate{
publicstaticvoidmain(String[]args){
Listl=newArrayList();
l.add(“A”);l.add(“B”);l.add(“C”);l.add(“D”);l.add(“E”);
ListIteratori=l.listIterator();
i.next();i.next();i.next();i.next();
i.remove();
i.previous();i.previous();
i.remove();
System.out.pr