20145209刘一阳《JAVA程序设计》第八周课堂测试

第八周课堂测试

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

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

2、Java中,可以继承(B)类定义线程

A .Runnable

B .Thread

C .Future

D .Executor

3、以下(AB)方法会使线程进入阻塞状态?

A .Thread.sleep()

B .wait()

C .notify()

D .interrupt()

4、如果有以下代码段:

Thread thread = new Thread(new ________________() {
	public void run() {...} 
});

空白部分指定哪些类型可以通过编译?(AB)

A .Runnable

B .Thread

C .Future

D .Executor

5、调用线程的interrupt()方法 ,会抛出(CD)异常对象?

A .IllegalStateException

B .RuntimeException

C .InterruptedException

D .SecurityException

6、下列哪个叙述是错误的?(A)

A .线程新建后,不调用start方法也有机会获得CPU资源

B .如果两个线程需要调用同一个同步方法,那么一个线程调用该同步方法时,另一个线程必须等待。

C .目标对象中的run方法可能不启动多次

D .默认情况下,所有线程的优先级都是5级。

7、对于下列程序,哪个叙述是正确的?(A)

public class E { 
   public static void main(String args[]) { 
       Target target =new Target();
       Thread thread =new Thread(target);
       thread.start();
   }
}
class Target implements Runnable{
    public void run(){
       System.out.println("ok");
    }
}

A .JVM认为这个应用程序共有两个线程。

B .JVM认为这个应用程序只有一个主线程。

C .JVM认为这个应用程序只有一个thread线程。

D .thread的优先级是10级。

8、对于下列程序,哪个叙述是正确的?(B)

A .JVM认为这个应用程序共有两个线程。

B .JVM认为这个应用程序只有一个主线程。

C .JVM认为这个应用程序只有一个thread线程。

D .程序有编译错误,无法运行。

9、进程和程序的一个本质区别是(A)

A .前者为动态的,后者为静态的。

B .前者存储在内存,后者存储在外存。

C .前者在一个文件中,后者在多个文件中。

D .前者分时使用CPU,后者独占CPU。

10、进程的基本状态有:新建、运行、阻塞、死亡。(A)

A .true

B .false

11、下列说法正确的是(ABD)

A .Java语言的一大特性就是内置对多线程的支持。

B .main方法返回时,JVM就会结束Java应用程序。

C .Java应用程序中第一个线程结束后,JVM结束Java应用程序。

D .Java语言使用Thread类及其子类对象来表示线程。

12、下列关于线程状态与生命周期的说法,错误的是(BC)

A .在线程没有结束run()方法之前,不要让线程再调用start()方法,否则将发生IllegalThreadStateException异常。

B .run()方法负责通知JVM有新的线程等候切换。

C .执行sleep()结束后,该线程进入运行状态,得到CPU的使用权。

D .进入阻塞状态时,线程不能进入排队队列。

13、JVM的线程调度器的任务是使高优先级的线程能始终运行,一旦时间片有空闲,则使具有同等优先级的线程以轮流的方式顺序使用时间片。(A)

A .true

B .false

14、下列关于setPriority方法的说法,错误的是(C)

A .该方法更改线程的优先级。

B .该方法传入的参数为,要为线程设定的优先级。

C .该方法首先调用线程的 checkAccess 方法,且不带任何参数。这可能抛出IllegalArgumentException异常。

D .如果优先级不在MIN_PRIORITY到MAX_PRIORITY范围内,则抛出IllegalArgumentException异常。

15、当线程使用CPU资源的时间到时后,即使线程没有完成自己的全部操作,Java调度器也会中断当前线程的执行,把CPU的使用权切换给下一个排队等待的线程。(A)

A .true

B .false

16、下列关于守护线程的说法,正确的是(ABCD)

A .thread.setDaemon(true)必须在thread.start()之前设置,否则会报IllegalThreadStateException异常。

B .如果用户线程已经全部退出运行,只剩下守护线程存在,那么虚拟机也就退出了。

C .将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。

D .守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。

17、不可以在非同步方法中使用wait()、notify()、notifyAll()。(A)

A .true

B .false

18、下列关于线程常用的方法的叙述,错误的是(CD)

A .让run方法执行完毕,线程就变成死亡状态。

B .如果线程在休眠时被打断,JVM会抛出InterruptedException异常。

C .一个已运行的线程没有进入死亡状态时,如果再给线程分配实体,则先前的实体会被垃圾收集器收集掉。

D .当线程进入死亡状态后,线程就不能够调用isAlive()方法了。

19、线程在新建和死亡状态,调用isAlive()方法返回的值是false。(A)

A .true

B .false

20、以下代码中有两个线程:(B)

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

posted @ 2018-06-15 05:09  20145209  阅读(1371)  评论(0编辑  收藏  举报