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

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

for someone who can not fight

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

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
国内精品视频久久| 亚洲一区二区三区777| 日韩美女福利视频| 欧美孕妇孕交黑巨大网站| 2021国产精品视频| 欧美极品欧美精品欧美视频| 国产美女久久久| 欧美在线免费视频| 国产精品爱久久久久久久| 欧美激情综合亚洲一二区| 久久夜色精品国产亚洲aⅴ| 九九精品视频在线观看| 日韩av电影在线免费播放| 日韩激情在线视频| www.日韩av.com| 亚洲xxxx做受欧美| 中文字幕综合一区| 91日韩在线视频| 欧美精品久久一区二区| 欧美日韩中文字幕在线视频| 国产精品丝袜视频| 精品亚洲一区二区三区| 精品国产乱码久久久久久虫虫漫画| 国产精品国产福利国产秒拍| 成人国产精品一区二区| 亚洲天堂影视av| 欧美成人国产va精品日本一级| 欧美激情精品久久久久久黑人| 国产一区二区三区视频免费| 久久6免费高清热精品| 91久久久久久久久久久久久| 欧美大码xxxx| 国产一区二区三区精品久久久| 中文字幕在线看视频国产欧美在线看完整| 久久久久久高潮国产精品视| 国产精品旅馆在线| 九色精品免费永久在线| 亚州国产精品久久久| www.欧美精品一二三区| 欧美在线播放视频| 91高清免费视频| 欧美一区二区三区图| 国产精品第一页在线| 国产亚洲欧美日韩一区二区| 欧美激情视频网址| 国产精品白丝av嫩草影院| 欧美xxxx18性欧美| 91啪国产在线| 精品av在线播放| 国产极品jizzhd欧美| 亚洲国产成人精品久久| 精品丝袜一区二区三区| 日韩最新在线视频| 久久久久久久97| 亚洲国产中文字幕久久网| 国产精品99久久久久久www| 最近更新的2019中文字幕| 日韩欧美极品在线观看| 岛国精品视频在线播放| 精品久久久久久中文字幕大豆网| 91精品综合视频| 日韩高清免费观看| 午夜精品一区二区三区在线| 国产精品三级网站| 欧美与欧洲交xxxx免费观看| 91中文精品字幕在线视频| 97在线观看免费高清| 在线观看欧美视频| 一本色道久久综合狠狠躁篇怎么玩| 在线视频日韩精品| 成人黄色影片在线| 九色成人免费视频| 国产成人久久精品| 26uuu另类亚洲欧美日本一| 91久热免费在线视频| 亚洲性无码av在线| 久久久久久久999精品视频| 久久手机免费视频| 久久久91精品国产一区不卡| 亚洲精品久久久久久久久| www日韩中文字幕在线看| 欧美日韩国产在线播放| 国产精品美腿一区在线看| 久久久久久久一区二区三区| 日韩在线视频一区| 亚洲色图日韩av| 亚洲a∨日韩av高清在线观看| 欧美激情奇米色| 亚洲黄页视频免费观看| 午夜精品一区二区三区在线播放| 国产精品亚洲美女av网站| 欧美日韩性视频在线| 国外色69视频在线观看| 亚洲老司机av| 精品国产乱码久久久久久天美| 久久久视频免费观看| 在线视频欧美日韩| 国产日韩欧美91| 精品久久久久久久中文字幕| 日韩精品中文字幕有码专区| 欧美大片欧美激情性色a∨久久| 国产区精品在线观看| 久久久久久18| 在线看日韩欧美| 国产成+人+综合+亚洲欧洲| 日本午夜在线亚洲.国产| 久久久天堂国产精品女人| 日韩免费在线观看视频| 97精品视频在线| 精品久久久久久中文字幕一区奶水| 中文综合在线观看| 欧美激情一区二区三区久久久| 欧美国产中文字幕| 久久精品国产视频| 久久精品国产免费观看| 成人福利在线观看| 国产日本欧美一区| 国产精品久久久av| 美女啪啪无遮挡免费久久网站| 国产精品久久网| 日韩欧美精品中文字幕| 91精品久久久久久久久青青| 国产成人精品免高潮费视频| 亚洲欧美在线x视频| 日韩在线免费视频观看| 欧美一区深夜视频| 欧美高清在线观看| 亚洲一区精品电影| 岛国视频午夜一区免费在线观看| 国产亚洲a∨片在线观看| 欧美精品日韩www.p站| 91精品国产高清久久久久久91| 国产欧美久久久久久| 亚洲人成伊人成综合网久久久| 亚洲精品www久久久| 97人洗澡人人免费公开视频碰碰碰| 91在线观看免费网站| 成人国产在线视频| 欧美午夜片欧美片在线观看| 日韩中文字幕网| 国产精品户外野外| 国产精品视频色| 国产亚洲一区精品| 欧美性猛交xxxx免费看| 欧美国产高跟鞋裸体秀xxxhd| 久久久久国产精品免费| 亚洲欧美激情四射在线日| 亚洲欧美日韩天堂| 红桃视频成人在线观看| 国产精品福利小视频| 欧美日韩精品中文字幕| 国产亚洲精品美女久久久久| 最近2019免费中文字幕视频三| 国产手机视频精品| 57pao国产精品一区| 亚洲成人激情在线观看| 久久天天躁狠狠躁老女人| 国产日本欧美一区二区三区在线| 国产成人精品免费久久久久| 成人激情视频小说免费下载| 日韩av免费看网站| 日本高清+成人网在线观看| 国产精品激情av电影在线观看| 狠狠躁夜夜躁人人躁婷婷91|