錯題集05
總結:
綜上:新生代基本采用復制算法,老年代采用標記整理算法。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需要轉型。
總結:
多態綁定機制:
實例方法與引用變量所引用的對象的方法綁定;
靜態方法與引用變量所聲明的類型的方法綁定;
成員變量(實例變量、靜態變量)與引用變量所聲明的類型的成員變量綁定。
在這道題目中,由於都是實例方法,所以與所引用的對象的方法綁定。(new 後跟引用對象)
對於多態,可以總結它為:
一、使用父類類型的引用指向子類的對象;
二、該引用只能調用父類中定義的方法和變量;
三、如果子類中重寫了父類中的一個方法,那麽在調用這個方法的時候,將會調用子類中的這個方法;(動態連接、動態調用)
四、變量不能被重寫(覆蓋),”重寫“的概念只針對方法,如果在子類中”重寫“了父類中的變量,
多態的3個必要條件:
1.繼承 2.重寫 3.父類引用指向子類對象。
總結:
首先final聲明的方法是不能被覆蓋的,但是這裏並不錯誤,因為方法是private的,
也就是子類沒有繼承父類的run方法,因此子類的run方法跟父類的run方法無關,
並不是覆蓋。new Car().run()也是調用子類的run方法。
錯題集05