今天還想簡單寫寫線程的東西,結果剛剛寫完我就懵逼了。
結果啥都沒有輸出,而用主方法運行就可以輸出。沒辦法,只有度年來尋求自己的答案了
結果各方面的了解,我算是有個了解了.
首先來看看代碼
package com.mendale.Test; import java.util.Date; import org.junit.Test; public class Test1 { @Test public void test() { MyTime mt = new MyTime(); mt.start(); } public static void main(String[] args) { MyTime mt = new MyTime(); mt.start(); } } class MyTime extends Thread{ public void run(){ boolean flag=true; while(flag){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Date d=new Date(); System.out.println(d); } } }
如果你用單元測試你會發現什么也沒輸出,同時也沒報錯;這個時候你再用主方法測試你就會
發現竟然有輸出,竟然有輸出了!!! 這個問題也是讓我糾結了很久。
回想一下:
我們常用的方法其實是一個精靈線程(即守護線程:它是在保證其他線程運行完之后,然后也就over了)。而單元測試我
上網了解了一下它不是一個精靈線程
(后續源碼分析:暫緩)
