我的應用程序中有客戶端和服務器線程。當我將這些應用程序作爲獨立應用程序運行時,這些線程正確通信。JUnit線程測試
但是,當我運行客戶端作爲JUnit和服務器作爲獨立,客戶端線程在幾秒鐘內死亡。
我無法得到,爲什麼這樣不同的行爲。
我的應用程序中有客戶端和服務器線程。當我將這些應用程序作爲獨立應用程序運行時,這些線程正確通信。JUnit線程測試
但是,當我運行客戶端作爲JUnit和服務器作爲獨立,客戶端線程在幾秒鐘內死亡。
我無法得到,爲什麼這樣不同的行爲。
當JUnit運行程序終止時,所有派生的線程等也被終止(因爲它很可能在單獨的JVM實例中運行)。
這是一個(相當老)article describing the problem you experienced(它推薦的GroboUtils庫似乎早已被廢棄了)。 another, recent one,使用新的Java併發框架的更現代的解決方案。
後一種解決方案的要點是它通過執行程序運行線程,執行程序通過Future
s發佈運行結果。並且Future.get
會阻塞,直到線程完成任務,自動保持JUnit測試活動。你或許可以將這個技巧應用於你的案例。
當線程死亡時,你會得到任何異常嗎? – Thilo 2012-04-23 08:15:52
沒有例外... :( 而且奇怪的事情是獨立的應用程序相同的工作 – Aryan 2012-04-23 08:19:21
線程「死」究竟如何?你怎麼知道? – ShiDoiSi 2012-04-23 08:23:33