多執行緒面試題1

2021-09-25 13:01:38 字數 1375 閱讀 5479

題目:自定義容器,提供新增元素(add)和獲取元素數量(size)方法。

啟動兩個執行緒。執行緒1向容器中新增10個資料。執行緒2監聽容器元素數量,當容器元素數量為5時,執行緒2輸出資訊並終止。

使用三種方法:volatile,    synchronized,    countdownlatch(門閂)

1.使用volatile修飾容器,只能保證容器資料的可見性保證不了完整性

public class testbinfa2   catch (interruptedexception e) }}

}).start();

new thread(new runnable() catch (interruptedexception e)

system.out.println("長度為*****====>"+t.size());

if(t.size() == 45)}}

}).start(); }}

class test_01_container

public /*synchronized*/ int size()

}

2.synchronized能保證資料的同步和併發,

public class testbinfa3   catch (interruptedexception e) }}

}}

}).start();

new thread(new runnable() catch (interruptedexception e)

}system.out.println("長度為*****====>"+t.size()+"被中斷");

lock.notifyall();

break;}}

}}).start(); }}

class test_01_container1

public int size()

}

3.使用門閂的方法,當add完後長度為5,就釋放門閂,減掉門閂使其開放,

當檢測長度不為5則等待門閂,

public class testbinfa4   catch (interruptedexception e) }}

}}).start();

new thread(new runnable() catch (interruptedexception e)

}system.out.println("長度為*****====>"+t.size()+"被中斷");

break;}}

}).start(); }}

class test_01_container2

public int size()

}

java多執行緒面試題1

假設如下 中,若t1執行緒在t2執行緒啟動之前已經完成啟動。的輸出是 public static void main stringargs throws exception catch interruptedexception e t1.start thread.sleep 1000 we assu...

多執行緒面試題

題目 主線程執行10次,子執行緒執行10次,此過程重複50次 package com.thread.test function 主線程執行10次,子執行緒執行10次,此過程重複50次 public class threadproblem start for int j 0 j 50 j class ...

面試題 多執行緒

現有程式同時啟動了4個執行緒去呼叫testdo.dosome key,value 方法,由於testdo.dosome key,value 方法內的 是先暫停1秒,然後再輸出以秒為單位的當前時間值,所以,會列印出4個相同的時間值,如下所示 4 4 1258199615 1 1 1258199615 ...