題目:自定義容器,提供新增元素(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 ...