【java】使用Junit測試線程過程中出現的小問題

來源:互聯網
上載者:User

標籤:java多線程測試

本文內容介紹在使用Junit進行線程測試的時候出現的一個小問題,自己簡單做一個記錄,以便後續查看


在使用java編寫多線程並發實驗程式時在Juint寫了測試程式,但並沒有得到預想的效果。

直接上代碼


線程類:

package sm.examples.threaddemo;import org.apache.log4j.Logger;public class Thread1 implements Runnable {private static final Logger logger = Logger.getLogger(Thread1.class);@Overridepublic void run() {int i = 0;while (true) {logger.info("-----in while------" + i++);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}if (i == 50) {break;}}}}

測試類別:

package sm.test;import org.apache.log4j.Logger;import org.junit.Test;import sm.examples.threaddemo.Thread1;public class TestThreadDemo {/** * Logger for this class */private static final Logger logger = Logger.getLogger(TestThreadDemo.class);@Testpublic void test(){Thread1 thread1 = new Thread1();Thread t1 = new Thread(thread1);Thread t2 = new Thread(thread1);t1.start();t2.start();}}

原本預想執行之後兩個線程會交替的在控制台列印出0-49,但實際上只是各自列印出了

[sm.examples.threaddemo.Thread1][Thread-0] - -----in while------0

[sm.examples.threaddemo.Thread1][Thread-1] - -----in while------0


使用main函數進行測試,實現了預想的效果。簡單思考了一下,感覺是測試類別中的test方法中啟動了兩個線程之後自己也結束了,所以啟動的線程在控制台也不能輸出內容了。


於是修改了一下代碼,在測試類別的test方法中加入休眠等待,在控制台輸出了預期效果。

修改後代碼:

package sm.test;import org.apache.log4j.Logger;import org.junit.Test;import sm.examples.threaddemo.Thread1;public class TestThreadDemo {/** * Logger for this class */private static final Logger logger = Logger.getLogger(TestThreadDemo.class);@Testpublic void test(){Thread1 thread1 = new Thread1();Thread t1 = new Thread(thread1);Thread t2 = new Thread(thread1);t1.start();t2.start();try {logger.info("in test");Thread.sleep(10000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


【java】使用Junit測試線程過程中出現的小問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.