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