1. 程式人生 > >錯題集05

錯題集05

類型 pad itl tom color -type 實例 報錯 lease

技術分享圖片

總結:

綜上:新生代基本采用復制算法,老年代采用標記整理算法。cms采用標記清理。

技術分享圖片

總結:

在每個線程中都是順序執行的,所以sl.printAll();必須在前三句執行之後執行,也就是輸出的內容必有(連續或非連續的)ABC。

而線程之間是穿插執行的,所以一個線程執行 sl.printAll();之前可能有另一個線程執行了前三句的前幾句。

E答案相當於線程1順序執行完然後線程2順序執行完。

G答案則是線程1執行完前三句add之後線程2插一腳執行了一句add然後線程1再執行 sl.printAll();輸出ABCA。接著線程2順序執行完輸出ABCABC

輸出加起來即為ABCAABCABC。

技術分享圖片

總結:


A,Java 並發庫 的Semaphore 可以很輕松完成信號量控制,Semaphore可以控制某個資源可被同時訪問的個數,通過 acquire() 獲取一個許可,如果沒有就等待,而 release() 釋放一個許可。


B,CyclicBarrier 主要的方法就是一個:await()。await() 方法沒被調用一次,計數便會減少1,並阻塞住當前線程。當計數減至0時,阻塞解除,所有在此 CyclicBarrier 上面阻塞的線程開始運行。
C,直譯過來就是倒計數(CountDown)門閂(Latch)。倒計數不用說,門閂的意思顧名思義就是阻止前進。在這裏就是指 CountDownLatch.await() 方法在倒計數為0之前會阻塞當前線程。
D,Counter不是並發編程的同步器

技術分享圖片


技術分享圖片

總結:

java中如果碰到char、byte和short參與運算時,會自動將這些值轉換為int類型然後再進行運算。

這裏a1和a2就自動轉為int類型了,結果也為Int類型。把一個int類型賦值給byte需要轉型。

技術分享圖片

總結:

多態綁定機制:

  1. 實例方法與引用變量所引用的對象的方法綁定;

  2. 靜態方法與引用變量所聲明的類型的方法綁定;

  3. 成員變量(實例變量、靜態變量)與引用變量所聲明的類型的成員變量綁定。

在這道題目中,由於都是實例方法,所以與所引用的對象的方法綁定。(new 後跟引用對象)


對於多態,可以總結它為:

一、使用父類類型的引用指向子類的對象;

二、該引用只能調用父類中定義的方法和變量;

三、如果子類中重寫了父類中的一個方法,那麽在調用這個方法的時候,將會調用子類中的這個方法;(動態連接、動態調用)

四、變量不能被重寫(覆蓋),”重寫“的概念只針對方法,如果在子類中”重寫“了父類中的變量,

那麽在編譯時會報錯。

多態的3個必要條件:

1.繼承 2.重寫 3.父類引用指向子類對象。

技術分享圖片

總結:

首先final聲明的方法是不能被覆蓋的,但是這裏並不錯誤,因為方法是private的,

也就是子類沒有繼承父類的run方法,因此子類的run方法跟父類的run方法無關,

並不是覆蓋。new Car().run()也是調用子類的run方法。


錯題集05