第十二周测试总结分析

1、下面代码中共有()个线程?

public class ThreadTest {

    public static void main(String args[]){

        MyThread myThread =new MyThread();

        Thread t1=new Thread(myThread);

        Thread t2=new Thread(myThread);

        t1.start();

        t2.start();

    }

}

class MyThread extends Thread {

    ...

}

A .1
B .2
C .3
D .4
答案:C
解析:除了t1,t2, 不要忘了main所在的主线程。

2、Java中,可以继承( )类定义线程
A .Runnable
B .Thread
C .Future
D .Executor
答案:B

3、如果有以下代码段:

Thread thread = new Thread(new ________________() {

    public void run() {...} 

});

空白部分指定哪些类型可以通过编译?
A .Runnable
B .Thread
C .Future
D .Executor
答案:AB
解析:查API文档,Thread 也实现了 Runnable 接口。

4、下列哪个叙述是错误的?
A .线程新建后,不调用start方法也有机会获得CPU资源
B .如果两个线程需要调用同一个同步方法,那么一个线程调用该同步方法时,另一个线程必须等待。
C .目标对象中的run方法可能不启动多次
D .默认情况下,所有线程的优先级都是5级。
答案:A

5、进程和程序的一个本质区别是
A .前者为动态的,后者为静态的。
B .前者存储在内存,后者存储在外存。
C .前者在一个文件中,后者在多个文件中。
D .前者分时使用CPU,后者独占CPU。
答案:A

6、下列关于线程状态与生命周期的说法,错误的是
A .在线程没有结束run()方法之前,不要让线程再调用start()方法,否则将发生IllegalThreadStateException异常。
B .run()方法负责通知JVM有新的线程等候切换。
C .执行sleep()结束后,该线程进入运行状态,得到CPU的使用权。
D .进入阻塞状态时,线程不能进入排队队列。
答案:BC
解析:B项:应为start()方法。C项:执行sleep结束后,线程重新进到线程队列中排队等待CPU资源。

7、下列关于守护线程的说法,正确的是
A .thread.setDaemon(true)必须在thread.start()之前设置,否则会报IllegalThreadStateException异常。
B .如果用户线程已经全部退出运行,只剩下守护线程存在,那么虚拟机也就退出了。
C .将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。
D .守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。
答案:ABCD

8、下列关于setPriority方法的说法,错误的是
A .该方法更改线程的优先级。
B .该方法传入的参数为,要为线程设定的优先级。
C .该方法首先调用线程的 checkAccess 方法,且不带任何参数。这可能抛出IllegalArgumentException异常。
D .如果优先级不在MIN_PRIORITY到MAX_PRIORITY范围内,则抛出IllegalArgumentException异常。
答案:C
解析:查询API。

9、以下代码中有两个线程:

public class E { 

   public static void main(String args[]) { 

       Target target =new Target();

       Thread thread =new Thread(target);

       target.run();

       for(int i= 0;i<=10;i++) {

         System.out.println("yes");

         try{  Thread.sleep(1000);

         }

         catch(InterruptedException exp){}

      }

    }

}

class Target implements Runnable{

    public void run() {

       for(int i= 0;i<=10;i++) {

         System.out.println("ok");

         try{

              Thread.sleep(1000);

         }

         catch(InterruptedException exp){}

       }

    }

}

A .true
B .false
答案:B
解析:该程序只有一个主线程,thread线程并没有启动。

10、不可以在非同步方法中使用wait()、notify()、notifyAll()。
A .true
B .false
答案:A
解析:课本P375.

11、域名解析服务器(ARP)负责将域名转化为IP地址,从而与主机连接。
A .true
B .false
答案:B
解析:域名解析服务器是DNS。

12、一个URL对象通常包含最基本的三部分信息:协议、地址和端口号。
A .true
B .false
答案:B
解析:协议、地址和资源。

13、下列说法错误的是
A .IP地址标识Internet上的计算机,端口号标识服务器上的进程。
B .端口号为1-65535之间的整数。
C .安全Shell(SSH)服务占用端口21,万维网(WWW)服务的超文本传输协议(HTTP)占用端口80。
D .0-1023端口被预先定义的服务通信占用。
答案:C
解析:SSH服务占用端口22。

14、ServerSocket的构造方法public ServerSocket()创建非绑定服务器套接字。如果打开套接字时发生IO错误,则抛出IOException异常。
A .true
B .false
答案:A
解析:查询API。

15、下列关于TCP和UDP的说法,正确的是
A .TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。
B .通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
C .UDP和TCP都属于网络层协议。
D .UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。
答案:ABD
解析:C项:UDP和TCP都属于传输层协议。

16、下列关于ServerSocket类的说法正确的是
A .accept()方法在连接传入之前一直阻塞。返回值为boolean类型。
B .public String toString()方法作为 String 返回此套接字的实现地址和实现端口。
C .setSoTimeout(int timeout) 通过指定超时值启用/禁用 SO_TIMEOUT,以秒为单位。
D .public boolean isBound()返回 ServerSocket 的绑定状态。如果将 ServerSocket 成功地绑定到一个地址,则返回 true。
答案:BD
解析:查询API关于ServerSocket类的介绍。A项返回值类型错误。C项单位为毫秒。

17、以下能够支持TCP/IP连接的类是
A .InetAddress
B .Packet
C .Socket
D .ServerSocket
答案:CD

18、构成World Wide Web基础的关键协议是http协议。
A .true
B .false
答案:A

19、为了获取远程主机的文件等内容,当创建URL对象后,需要使用哪个方法获取信息?
A .getPort
B .getHost
C .openStream()
D .openConnection()
答案:C

20、使用流式套接字编程时,为了向对方发送数据,则需要使用哪个方法?
A .getInetAddress()
B .getLocalPort()
C .getOutputStream()
D .getInputStream()
答案:C

21、当找不到客户的服务器地址时会抛出
A .IOException
B .UnknownHostException
C .SocketException
D .MalformedURLException
答案:B

22、使用UDP套接字通信时,哪个方法用于接收数据?
A .read()
B .receive()
C .accept()
D .listen()
答案:B
(说明:P是书上页码,详情请看书)

posted @ 2019-05-18 09:51  20175218陈敬勇  阅读(867)  评论(0编辑  收藏  举报