20145209劉一陽《JAVA程序設計》第八週課堂測試

第八週課堂測試

一、下面代碼中共有(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 .3spa

D .4線程

二、Java中,能夠繼承(B)類定義線程code

A .Runnable對象

B .Thread繼承

C .Future生命週期

D .Executor隊列

三、如下(AB)方法會使線程進入阻塞狀態?

A .Thread.sleep()

B .wait()

C .notify()

D .interrupt()

四、若是有如下代碼段:

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

空白部分指定哪些類型能夠經過編譯?(AB)

A .Runnable

B .Thread

C .Future

D .Executor

五、調用線程的interrupt()方法 ,會拋出(CD)異常對象?

A .IllegalStateException

B .RuntimeException

C .InterruptedException

D .SecurityException

六、下列哪一個敘述是錯誤的?(A)

A .線程新建後,不調用start方法也有機會得到CPU資源

B .若是兩個線程須要調用同一個同步方法,那麼一個線程調用該同步方法時,另外一個線程必須等待。

C .目標對象中的run方法可能不啓動屢次

D .默認狀況下,全部線程的優先級都是5級。

七、對於下列程序,哪一個敘述是正確的?(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級。

八、對於下列程序,哪一個敘述是正確的?(B)

A .JVM認爲這個應用程序共有兩個線程。

B .JVM認爲這個應用程序只有一個主線程。

C .JVM認爲這個應用程序只有一個thread線程。

D .程序有編譯錯誤,沒法運行。

九、進程和程序的一個本質區別是(A)

A .前者爲動態的,後者爲靜態的。

B .前者存儲在內存,後者存儲在外存。

C .前者在一個文件中,後者在多個文件中。

D .前者分時使用CPU,後者獨佔CPU。

十、進程的基本狀態有:新建、運行、阻塞、死亡。(A)

A .true

B .false

十一、下列說法正確的是(ABD)

A .Java語言的一大特性就是內置對多線程的支持。

B .main方法返回時,JVM就會結束Java應用程序。

C .Java應用程序中第一個線程結束後,JVM結束Java應用程序。

D .Java語言使用Thread類及其子類對象來表示線程。

十二、下列關於線程狀態與生命週期的說法,錯誤的是(BC)

A .在線程沒有結束run()方法以前,不要讓線程再調用start()方法,不然將發生IllegalThreadStateException異常。

B .run()方法負責通知JVM有新的線程等候切換。

C .執行sleep()結束後,該線程進入運行狀態,獲得CPU的使用權。

D .進入阻塞狀態時,線程不能進入排隊隊列。

1三、JVM的線程調度器的任務是使高優先級的線程能始終運行,一旦時間片有空閒,則使具備同等優先級的線程以輪流的方式順序使用時間片。(A)

A .true

B .false

1四、下列關於setPriority方法的說法,錯誤的是(C)

A .該方法更改線程的優先級。

B .該方法傳入的參數爲,要爲線程設定的優先級。

C .該方法首先調用線程的 checkAccess 方法,且不帶任何參數。這可能拋出IllegalArgumentException異常。

D .若是優先級不在MIN_PRIORITY到MAX_PRIORITY範圍內,則拋出IllegalArgumentException異常。

1五、當線程使用CPU資源的時間到時後,即便線程沒有完成本身的所有操做,Java調度器也會中斷當前線程的執行,把CPU的使用權切換給下一個排隊等待的線程。(A)

A .true

B .false

1六、下列關於守護線程的說法,正確的是(ABCD)

A .thread.setDaemon(true)必須在thread.start()以前設置,不然會報IllegalThreadStateException異常。

B .若是用戶線程已經所有退出運行,只剩下守護線程存在,那麼虛擬機也就退出了。

C .將線程轉換爲守護線程能夠經過調用Thread對象的setDaemon(true)方法來實現。

D .守護線程應該永遠不去訪問固有資源,如文件、數據庫,由於它會在任什麼時候候甚至在一個操做的中間發生中斷。

1七、不能夠在非同步方法中使用wait()、notify()、notifyAll()。(A)

A .true

B .false

1八、下列關於線程經常使用的方法的敘述,錯誤的是(CD)

A .讓run方法執行完畢,線程就變成死亡狀態。

B .若是線程在休眠時被打斷,JVM會拋出InterruptedException異常。

C .一個已運行的線程沒有進入死亡狀態時,若是再給線程分配實體,則先前的實體會被垃圾收集器收集掉。

D .當線程進入死亡狀態後,線程就不可以調用isAlive()方法了。

1九、線程在新建和死亡狀態,調用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

相關文章
相關標籤/搜索