java多執行緒面試題1

2021-08-30 02:48:23 字數 667 閱讀 9892

假設如下**中,若t1執行緒在t2執行緒啟動之前已經完成啟動。**的輸出是()

public static void main(stringargs)throws exception  catch (interruptedexception e) }}

};t1.start();

thread.sleep(1000);//we assume thread 1 must start up within 1 sec.

thread t2 = new thread() }};

t2.start();

}

答案

thread 2 sent notify.

thread 1 wake up

解析:

執行obj.wait();時已釋放了鎖,所以t2可以再次獲得鎖,然後發訊息通知t1執行,但這時t2還沒有釋放鎖,

所以肯定是執行t2,然後釋放鎖,之後t1才有機會執行。notify()就是對物件鎖的喚醒操作。但有一點需要

注意的是notify()呼叫後,並不是馬上就釋放物件鎖的,而是在相應的synchronized(){}語句塊執行結束,

自動釋放鎖後,jvm會在wait()物件鎖的執行緒中隨機選取一線程,賦予其物件鎖,喚醒執行緒,繼續執行。這樣

java多執行緒面試題

有三個執行緒id分別是a b c,請有多線程式設計實現,在螢幕上迴圈列印10次abcabc 由於執行緒執行的不確定性,要保證這樣有序的輸出,必須控制好多執行緒的同步。執行緒同步有兩種基本方法 1 synchronized 2 wait,notify,notifyall 現在分別採用這兩種方法來解答這...

Java多執行緒面試題

執行緒池的原理,為什麼要建立執行緒池?將預先建立好的執行緒放入執行緒池當中。當有執行緒請求時,則從執行緒池中呼叫執行緒,呼叫結束之後歸還執行緒。當出現需要建立大量執行緒的情況時,反覆的建立執行緒會造成大量的效能損耗。使用執行緒池能降低損耗,提高響應的速度,方便管理執行緒。執行緒的生命週期,什麼時候會...

多執行緒面試題1

題目 自定義容器,提供新增元素 add 和獲取元素數量 size 方法。啟動兩個執行緒。執行緒1向容器中新增10個資料。執行緒2監聽容器元素數量,當容器元素數量為5時,執行緒2輸出資訊並終止。使用三種方法 volatile,synchronized,countdownlatch 門閂 1.使用vol...