亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
Junit測試中多線程的坑
作者:網絡轉載 發布時間:[ 2016/9/21 10:45:35 ] 推薦標簽:單元測試 Junit

  昨晚用Junit測試多線程代碼如下:
private int i = 3;
@Test
public void test() {
for (int i = 0; i < this.i; i ++) {
new Thread(new Runner()).start();
}
}
class Runner implements Runnable {
@Override
public void run() {
System.out.printlun(123);
}
}
  發現運行后居然沒有任何輸出…我又運行了好幾次,有時又有1~2句輸出,但是始終不全…
  當時還以為程序有錯,clean了class繼續,還是一樣的,早上起來查了下百度,才明白,原來Junit只管自己的運行,是說當Junit執行完畢后,會關閉程序,不會關心是否還有自己啟動的后臺線程在運行。當Junit運行完畢后,如果后臺線程還沒有執行完畢,那么也是不會再執行了,所以出現了昨天的情況…
  我始終對多線程的執行過程沒有意識呢…主線程和后臺線程的關系和執行一定要搞清楚呢…
  現在既然搞清楚了,那好辦了,下面代碼展示如何優雅的將Junit主線程設置為同步線程:
private int i = 3;
/*
* 線程計數器
* 將線程數量初始化
* 每執行完成一條線程,調用countDown()使計數器減1
* 主線程調用方法await()使其等待,當計數器為0時才被執行
*/
private CountDownLatch latch = new CountDownLatch(i);
@Test
public void test() {
for (int i = 0; i < this.i; i ++) {
new Thread(new Runner()).start();
}
try {
latch.await(); // 主線程等待
} catch (InterruptedException e) {
e.printStackTrace();
}
}
class Runner implements Runnable {
@Override
public void run() {
System.out.printlun(123);
latch.countDown(); // 執行完畢,計數器減1
}
  這樣改變代碼之后,一切正常了!

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: a4yy私人影院免费毛片 | 欧美一级视频免费观看 | 深夜福利网站在线观看 | 婷婷网五月天天综合天天爱 | 欧美在线网 | 国产成人精品福利网站人 | 青草草| 人善交zzzxxx另类 | 国产精品1024 | 国产精品一区二区三区高清在线 | 91精品国产综合成人 | 成人黄色一级毛片 | 亚洲国产成人欧美激情 | 欧美亚洲国产一区二区三区 | 成人午夜性视频欧美成人 | 亚洲你懂的 | 色偷偷88欧美精品久久久 | 欧美成人精品高清在线播放 | 成年网站在线观看 | 欧美一区二区三区香蕉视 | xxxxbbbb欧美极品| 天天干天天操天天爽 | 91短视频在线观看免费 | 国产综合色在线视频区色吧图片 | 天天色天天射综合网 | 手机午夜看片 | 亚洲欧美国产一区二区三区 | 亚洲精品日韩专区在线观看 | 一个人免费看的视频 | 久久综合五月开心婷婷深深爱 | 欧美日韩国产成人高清视频 | 91短视频社区在线观看 | 天天弄天天操 | 手机看高清特黄a大片 | 丁香激情六月 | 国产精品亚洲欧美日韩久久 | 日韩中文字幕免费 | 最近更新中文字幕2019视频 | 欧美精品久久久亚洲 | 天天摸日日干 | 国产日产亚洲欧美综合另类 |