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

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

for someone who can not fight

2019-11-14 10:26:07
字體:
來源:轉載
供稿:網友

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
国产精品成熟老女人| 欧美伦理91i| 国内精品久久久久伊人av| 欧美尺度大的性做爰视频| 亚洲欧美日韩国产中文| 国外色69视频在线观看| 国产精品草莓在线免费观看| 国产精品久久久久秋霞鲁丝| 国产视频欧美视频| 97香蕉超级碰碰久久免费软件| 国产精品入口免费视频一| 久久久久久久久久久久久久久久久久av| 亚洲香蕉成人av网站在线观看| 久久影院中文字幕| 国产精品一区二区av影院萌芽| 黄网站色欧美视频| 欧美一区二区三区免费视| 亚洲电影av在线| 中文字幕欧美日韩精品| 国产在线观看一区二区三区| 亚洲精品一区二区网址| 欧美日韩国产综合新一区| 精品国产户外野外| 欧美激情视频一区| 亚洲欧洲一区二区三区在线观看| 国产精品r级在线| 国产精品视频网| 欧美精品在线看| 亚洲影视九九影院在线观看| 亚洲第一天堂av| 亚洲欧美中文字幕在线一区| 日韩av大片在线| 国产成人一区二区三区电影| 91精品国产91久久久久福利| 国产欧美日韩91| 97国产精品视频| 国产精品爽爽爽| 激情成人在线视频| 亚洲电影免费观看| 久久久久久97| 中文字幕v亚洲ⅴv天堂| 欧美综合国产精品久久丁香| 在线性视频日韩欧美| 国产91精品高潮白浆喷水| 久久久久久久久久久91| 国产精品久久电影观看| 久久久91精品国产| 国产主播喷水一区二区| 欧美日本啪啪无遮挡网站| 在线观看精品自拍私拍| 欧美日韩亚洲天堂| 日韩在线观看免费高清| 91sao在线观看国产| 日韩中文在线视频| 国产91精品久| 亚洲japanese制服美女| 91av在线不卡| 日韩在线欧美在线国产在线| 中文字幕国内精品| 色播久久人人爽人人爽人人片视av| 久久琪琪电影院| 久久久av亚洲男天堂| 亚洲偷欧美偷国内偷| 亚洲精品国产综合区久久久久久久| 久久99视频免费| 国产精品96久久久久久又黄又硬| 色偷偷888欧美精品久久久| 国产精品jvid在线观看蜜臀| 国产精品美女在线| 久久艳片www.17c.com| 美女999久久久精品视频| 日韩精品极品在线观看播放免费视频| 国产在线视频不卡| 国产精品久久久久7777婷婷| 久久久亚洲影院你懂的| 日韩在线视频网| 成人福利免费观看| 亚洲欧美日韩中文视频| 国产精品网站视频| 亚洲免费视频观看| 日韩欧美一区视频| 亚洲成年人影院在线| 欧美久久精品一级黑人c片| 在线观看视频99| 亚洲色图美腿丝袜| 日韩视频在线观看免费| 欧美成人午夜视频| 亚洲国产另类久久精品| 精品久久在线播放| 中文字幕日韩av| 亚洲第一视频在线观看| 日韩中文有码在线视频| 欧美性69xxxx肥| 亚洲第一精品久久忘忧草社区| 欧美激情2020午夜免费观看| 亚洲香蕉伊综合在人在线视看| 国产精品中文字幕在线观看| 日韩精品免费在线视频观看| 精品国产自在精品国产浪潮| 亚洲国产成人精品久久久国产成人一区| 国产精品网站大全| 日韩欧美中文字幕在线播放| 午夜精品一区二区三区在线视| 国产精品网站大全| 国产精品一二三在线| 国产精品久久久久久久一区探花| 日本久久久久久| 福利一区视频在线观看| 久久精品视频中文字幕| 亚洲天堂免费视频| 91香蕉国产在线观看| 性色av一区二区三区| 国产精品免费福利| 激情成人在线视频| 日韩中文字幕精品| 永久免费看mv网站入口亚洲| 欧美日韩国产成人在线观看| 欧美黑人国产人伦爽爽爽| 草民午夜欧美限制a级福利片| 精品亚洲夜色av98在线观看| 国产亚洲美女久久| 8090成年在线看片午夜| www.欧美视频| 欧美精品少妇videofree| 亚洲精品二三区| 亚洲精品国产美女| 亚洲乱码av中文一区二区| 超碰日本道色综合久久综合| 亚洲欧洲日产国码av系列天堂| 裸体女人亚洲精品一区| 欧美电影在线观看| 日韩欧美中文免费| 欧美极品美女视频网站在线观看免费| 91九色精品视频| 亚洲乱码一区二区| 国产高清视频一区三区| 日本一区二区不卡| 911国产网站尤物在线观看| 成人免费网站在线看| 日本精品一区二区三区在线| 欧美日韩性视频| 久久久精品国产| 亚洲欧美精品中文字幕在线| 欧美日韩第一视频| 91久久国产综合久久91精品网站| 精品中文视频在线| 欧美日韩免费网站| 91在线观看免费网站| 一区二区亚洲欧洲国产日韩| 97国产精品免费视频| 国产精品美女久久久久av超清| 亚洲欧美激情四射在线日| 日韩在线精品视频| 国产亚洲视频中文字幕视频| 亚洲国产精品人人爽夜夜爽| 日韩精品福利网站| 欧美激情va永久在线播放| 亚洲理论在线a中文字幕| 久国内精品在线| 青青久久av北条麻妃黑人| 日韩亚洲国产中文字幕| 热久久这里只有精品| 97超级碰碰碰久久久| 日韩欧美国产视频|