亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

for someone who can not fight

2019-11-14 11:21:20
字體:
來源:轉載
供稿:網友

question 1.

public class Threads2 implements Runnable { public void run() { System.out.java.lang.RuntimeException:problemEnd of methodorEnd of methodrun.java.lang.RuntimeException:problem

main函數是一個線程 t.start開啟了另一個線程。這兩個線程同時在跑,有時候main的線程快,有時候t的線程快。在t.start();后面加上Thread.sleep(1000); 這樣一定是 run.


question 2.

Which two statements are true? (Choose two.)A. It is possible for more than two threads todeadlock at once.B. The JVM implementation guarantees that multiplethreads cannot enter into a deadlocked state.C. Deadlocked threads release once their sleep()method's sleep duration has expired.D. Deadlocking can occur only when the wait(),notify(), and notifyAll() methods are used incorrectly.E. It is possible for a single-threaded application todeadlock if synchronized blocks are used incorrectly.F. If a piece of code is capable of deadlocking, youcannot eliminate the possibility of deadlocking by inserting invocations ofThread.yield()..

【Answer】 AF

【例題辨析】 A. 題意:超過兩個線程可能立即出現死鎖。

符合死鎖定義。

B. 題意:Java虛擬機的實現能確保多個線程不會進入死鎖狀態。

Java語言中解決并發(Concurrent)運行沖突并不是由Java虛擬機負責的,而是由應用程序自行處理,比如同步化(Synchronization)等機制都由程序員在應用設計中使用的,所以,Java虛擬機并不能保證不發生死鎖。

C. 題意:只要死鎖線程的sleep()方法睡眠時間期滿,死鎖線程就會獲釋。

這種觀點顯然沒有正確理解Deadlock與sleep之間的區別,死鎖是線程對資源的競爭造成的,線程睡眠期滿并不能保證線程獲得所需資源。

D. 題意:只有當wait()、notify()、notifyAll()這些方法不正確使用時死鎖才發生。

wait()、notify()、notifyAll()這些方法不正確使用時確實可以造成死鎖,但不是死鎖發生的唯一原因,根本原因還是資源競爭,因此別的因素也可以造成死鎖。

E. 題意:只有當同步塊不正確使用時單線程應用才會死鎖。

死鎖是發生在兩個或兩個以上線程之間,既然是單線程應用那就談不上死鎖了。

F. 題意:如果一個程序片斷會死鎖,那么你就不能通過插入Thread.yield()方法調用消除死鎖。

Thread.yield()方法功能是告訴線程調度者當前線程愿意讓出對處理器(CPU)的占用,線程調度者甚至可以不理睬這個方法。造成死鎖的資源不僅是處理器,顯然這種方式并不足以解決死鎖。


question 3.

(1)線程同步(Thread Synchronization)

線程間通信主要是通過共享字段(Field)或對象引用實現的,這種通信形式雖然高效,但會帶來線程干擾(Thread Interference)和內存不一致的弊端,線程同步機制就是防止這類弊端的機制。不過,線程同步機制又會帶來線程競爭(Thread Contention)問題,即在兩個或兩個以上線程同時訪問同一資源時導致線程阻塞。

(2)內部鎖(Intrinsic Lock),又稱監控鎖(Monitor Lock)

Java同步化機制是圍繞內部鎖建立的,每個對象都擁有唯一的一把內部鎖,當線程需要排他性地訪問某個對象時,這個線程就需要擁有那個對象的內部鎖,一旦這個線程擁有那個對象的內部鎖,其他線程就不能再獲得那把內部鎖,如果其他線程仍試圖去獲取那把內部鎖將會被阻塞。

(3)同步化方法(Synchronized Method)和同步化語句(Synchronized Statement)

Java語言為同步化機制提供了兩種基本形式,即同步化方法(Synchronized Method)和同步化語句(Synchronized Statement)。synchronized是建立同步化方法或語句的關鍵詞。

當一個線程執行一個同步化方法時,線程就默認擁有同步化方法所在對象的內部鎖,其他線程要調用這個對象的同步化方法(即使是不同的同步化方法)時都會被阻塞,直到第一個線程執行完成同步化方法釋放內部鎖后才能再執行這個對象的同步化方法。

同步化語句則是更加靈活的同步化機制,通過synchronized關鍵詞明確指定提供內部鎖的對象,這樣同一個對象中不同的同步化語句塊就可以擁有不同的內部鎖,不同的同步化語句塊就可以讓不同的線程調用執行。

(4)wait()、notify()、notifyAll()方法

1,wait(): 讓線程處于凍結狀態,被wait的線程會被存儲到線程池中。 2,notify():喚醒線程池中一個線程(任意). 3,notifyAll():喚醒線程池中的所有線程。

調用這幾個方法的對象的內部鎖必須被當前線程獲得,如果當前線程不是主調對象內部鎖的擁有者,則會拋出IllegalMonitorStateException。

讓調用這幾個方法的線程擁有主調對象內部鎖的方式,主要有: (a)執行主調對象中同步化實例方法; (b)執行主調對象同步化語句塊; (c)對于Class對象,執行它的同步化靜態方法。

【例題】

void waitForSignal(){ Object obj = new Object(); synchronized (Thread.currentThread()) { obj.wait(); obj.notify(); } }Which statement is true?A. This code can throw anInterruptedException.B. This code can throw anIllegalMonitorStateException.C. This code can throw aTimeoutException after ten minutes.D. Reversing the order ofobj.wait() and obj.notify() might cause this method to complete normally.E. A call to notify() ornotifyAll() from another thread might cause this method to complete normally.F. This code does NOT compileunless "obj.wait()" is replaced with "((Thread)obj).wait()".

【Answer】 B

【例題辨析】

(1)wait()和notify()這兩個方法都會拋出IllegalMonitorStateException,這個異常是RuntimeException的子類,屬于unchecked exception,可以不捕捉。但是,wait()方法還會拋出InterruptedException,這個異常必須捕捉,因此程序有編譯錯誤。應該為waitForSignal方法聲明中添加throws InterruptedException: void waitForSignal() throws InterruptedException { ……

或者,為wait()和notify()方法調用語句添加try…catch…

(2)本例中,wait()和notify()方法的主調對象是obj,而obj對象的內部鎖沒有被當前線程取得,不符合wait()、notify()方法的調用條件,因此調用waitForSignal()時,會拋出如下異常:

Exception in thread "main"java.lang.IllegalMonitorStateExceptionatjava.lang.Object.wait(Native Method) atjava.lang.Object.wait(Unknown Source)atExamA_3.waitForSignal(ExamA_3.java:6)atExamA_3.main(ExamA_3.java:13)

解決方案是將synchronized (Thread.currentThread())修改為synchronized (obj),這樣當前線程就取得了obj對象的內部鎖。

A. InterruptedException在編譯時就會發現,因此不會在運行時拋出; B. 根據上面分析可知正確; C. 線程死鎖是無法預知時間的; D. 本程序錯誤不在于obj.wait() and obj.notify()調用順序,而是在于當前線程沒有取得obj內部鎖; E. 同上 F. 同上


question 4.

class PingPong2 { synchronized void hit(long n) { for(int i = 1; i < 3; i++) System.out.print(n + "-" + i + " "); }}public class Tester implements Runnable { static PingPong2 pp2 = new PingPong2(); public static void main(String[] args) { new Thread(new Tester()).start(); new Thread(new Tester()).start(); }public void run() { pp2.hit(Thread.currentThread().getId()); }}Which statement is true?A. The output could be 5-1 6-1 6-2 5-2B. The output could be 6-1 6-2 5-1 5-2C. The output could be 6-1 5-2 6-2 5-1D. The output could be 6-1 6-2 5-1 7-1

【例題辨析】 (1)主類Tester實現了線程方法run(),run()的主要工作就是取得當前線程號,main()方法創建了兩個Tester類的線程對象,既然有兩個線程對象,也就意味著run()代碼在內存映像中有兩份,即這兩個run()方法是各自獨立運行在兩個不同線程中,因此,Thread.currentThread().getId()取得的是各自的線程號;

(2)線程號取得后作為參數傳遞給PingPong2類對象pp2的hit()方法,hit()方法負責顯示輸出信息,hit()是同步化方法,也就意味著當某個線程調用它時,另外的線程必須等待它運行結束,才能取得調用hit()的資格。

A. 從輸出信息可以看出,5號線程調用同步化方法hit()時,該方法中循環還未運行結束,6號線程就又調用hit()輸出信息,這違背了同步化方法機制;

B. 從輸出信息可以看出,6號線程調用同步化方法hit()結束后,5號線程才能調用hit()輸出信息,這符合了同步化方法機制;

C. 同A

D. 出現6、5、7三個線程號,顯然不符合本題只有2個線程。


question 5.

【知識點】 (1)Thread類的start()方法 start()方法用于啟動線程的執行,也就是讓run()方法開始運行。 start()方法只允許執行一次,也就是說一個線程只允許啟動一次,即使執行完畢也不允許重新啟動,否則會拋出IllegalThreadStateException。

public class Threads4 { public static void main (String[] args) { new Threads4().go();}public void go() { Runnable r = new Runnable() { public void run() { System.out.print("foo"); } }; Thread t = new Thread(r); t.start(); t.start(); }}What is the result?A. Compilation fails.B. An exception is thrown at runtime.C. The code executes normally and prints "foo".D. The code executes normally, but nothing is printed.Explanation/Reference:Exception in thread "main" java.lang.IllegalThreadStateExceptionat java.lang.Thread.start(Unknown Source)at Threads4.go(Threads4.java:14)at Threads4.main(Threads4.java:3)foo

【答案】B

A. 可以在Eclipse開發環境中嘗試錄入本程序 ,如果編輯窗口中沒有錯誤提示出現,通常不存在編譯錯誤;

B. 同樣,在Eclipse開發環境中嘗試錄入本程序,可以看到如下信息:

fooException in thread “main”Java.lang.IllegalThreadStateException

atjava.lang.Thread.start(Unknown Source) atThreads4.go(Threads4.java:17) atThreads4.main(Threads4.java:5)

上述信息說明運行時拋出了異常,這是因為Thread類的start()方法只允許執行一次,也就是說一個線程只允許啟動一次,即使執行完畢也不允許重新啟動;


question 6.

public abstract class Shape {private int x;private int y;public abstract void draw();public void setAnchor(int x, int y) {this.x = x;this.y = y;}}Which two classes use the Shape class correctly? (Choose two.)A. public class Circle implements Shape {private int radius;}B. public abstract class Circle extends Shape {private int radius;}C. public class Circle extends Shape {private int radius;public void draw();}D. public abstract class Circle implements Shape {private int radius;public void draw();}E. public class Circle extends Shape {private int radius;public void draw() {/* code here */}}F. public abstract class Circle implements Shape {private int radius;public void draw() {/* code here */}}

Answer: BE


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本道色综合久久影院| 国产欧美在线播放| 日韩毛片在线观看| 国产精品88a∨| 国产精品久久久久久久久久ktv| 国产精品劲爆视频| 亚洲国产小视频| 精品av在线播放| 欧美丰满片xxx777| 97视频在线免费观看| 日韩在线欧美在线| 欧洲成人免费视频| 亚洲综合色激情五月| 国产综合在线观看视频| 国产精品电影在线观看| 久久久之久亚州精品露出| 国产精品久久久久久久久久小说| 96pao国产成视频永久免费| 国产又爽又黄的激情精品视频| 国产精自产拍久久久久久蜜| 日韩中文字幕av| 亚洲无亚洲人成网站77777| 亚洲第一页在线| 黄色成人在线播放| 国产精品久久久久久久久影视| 久久这里有精品视频| 亚洲va久久久噜噜噜久久天堂| 久久精品一偷一偷国产| 久久国产加勒比精品无码| 国产精品自拍视频| 成年人精品视频| 97不卡在线视频| 亚洲sss综合天堂久久| 热re99久久精品国产66热| 亚洲国产精品va在看黑人| 国产欧美va欧美va香蕉在| 在线看欧美日韩| 日韩中文在线不卡| 亚洲精品v欧美精品v日韩精品| 欧美成人午夜剧场免费观看| 亚洲人精选亚洲人成在线| 国产成人在线视频| 91热精品视频| 黑人巨大精品欧美一区二区一视频| 国产在线精品播放| 亚洲电影第1页| 97精品一区二区视频在线观看| 91免费的视频在线播放| 国产成人av网址| 欧美日本啪啪无遮挡网站| 欧美高清视频在线播放| 中日韩美女免费视频网址在线观看| 亚洲韩国青草视频| 久久综合网hezyo| 国产精品一二区| 亚洲国产欧美一区二区三区久久| 中文字幕亚洲一区在线观看| 不卡av电影在线观看| 亚洲国产成人精品一区二区| 欧美一级淫片aaaaaaa视频| 97在线免费观看视频| 久久久av电影| 欧美人与物videos| 亚洲人成亚洲人成在线观看| 亚洲福利视频网站| 欧美激情一区二区久久久| 亚洲一级黄色片| 欧美黄网免费在线观看| 日本亚洲欧美三级| 欧美激情18p| 91wwwcom在线观看| 日韩成人免费视频| 中文字幕欧美精品日韩中文字幕| 一本大道香蕉久在线播放29| 91精品国产精品| 亚洲自拍高清视频网站| 日韩大陆欧美高清视频区| 亚洲精品日韩av| 5252色成人免费视频| 国产亚洲人成网站在线观看| 超碰97人人做人人爱少妇| 伊人久久久久久久久久| 欧美wwwxxxx| 国产亚洲综合久久| 91久久精品美女| 国产一区二中文字幕在线看| 欧美在线视频一区二区| 北条麻妃一区二区在线观看| 亚洲第一黄色网| 黄色91在线观看| 欧美俄罗斯性视频| 国产精品久久久久久久av电影| 久久大大胆人体| 91在线视频一区| 91在线看www| 91亚洲国产成人久久精品网站| 国产一区视频在线播放| 亚洲福利在线看| 亚洲一区国产精品| 91亚洲国产成人久久精品网站| 在线播放日韩精品| 97成人精品视频在线观看| 亚洲国产成人精品电影| 伊人久久久久久久久久| 午夜伦理精品一区| 日韩精品免费一线在线观看| 亚洲美女精品成人在线视频| 91日韩在线视频| 菠萝蜜影院一区二区免费| 91在线直播亚洲| 亚洲人成绝费网站色www| 狠狠躁夜夜躁人人爽天天天天97| 韩国日本不卡在线| 国产不卡在线观看| 久久久精品国产一区二区| 国产成人精品视频在线| 亚洲欧洲在线播放| 亚洲成成品网站| 欧美精品午夜视频| 欧美国产日本高清在线| 亚洲片在线观看| 国产精品第二页| 午夜精品免费视频| 欧美裸体xxxx极品少妇| 91社影院在线观看| 日韩**中文字幕毛片| 日韩精品免费视频| 国内成人精品一区| 亚洲综合色激情五月| 成人久久久久久| 国产精品第10页| 国产精品福利网站| 精品久久久久久久久国产字幕| 亚洲精品97久久| 欧美电影免费观看| 亚洲一区二区国产| 麻豆国产va免费精品高清在线| 91久久久久久久久久久| 91夜夜揉人人捏人人添红杏| 日日噜噜噜夜夜爽亚洲精品| 国产视频在线观看一区二区| 日产精品99久久久久久| 日韩精品中文字幕在线| 国内精品久久久久| 国产一区二区三区视频在线观看| 国产精品jvid在线观看蜜臀| 成人性生交大片免费看视频直播| 日韩精品极品在线观看播放免费视频| 国产91在线高潮白浆在线观看| 亚洲va久久久噜噜噜久久天堂| 国产精品久久电影观看| 欧美成人亚洲成人日韩成人| 2018国产精品视频| 成人国产精品一区二区| 一区二区中文字幕| 青青久久av北条麻妃黑人| 国产精品电影网| 欧美激情女人20p| 国产成人高潮免费观看精品| 成人网在线免费观看| 国产黑人绿帽在线第一区| 久久亚洲欧美日韩精品专区| 国产91精品最新在线播放| 亚洲国产精品va在线观看黑人|