在jUnit 单元测试代码中,如果想测试多线程代码,结果失败。换成了main方法测试结果成功。
现象:有部分现成执行成功,部分不成功。简单跟进代码看了下,没有找到根本原因。自己猜测下,估计结果是因为:jUnit ,他本身不是一个精灵线程,他会把jUnit方法中的第一次启动的线程作为精灵线程,也就是说当第一个启动的线程(精灵线程/守护线程)执行完成之后程序就退出了,所以会出现部分成功部分没有执行的结果。
但是main方法去执行就能成功。可以推断下,众所周知main方法启动后本身线程会作为守护线程存在。当程序执行完成后,守护线程退出。守护线程永远是在程序执行完成之后再退出的,由此可以推断,jUnit单元方法测试多线程失败,是因为jUnit单元测试方法执行时自己没有守护线程启动,而是将程序中的一个线程作为自己的守护线程。当第一个线程(守护线程)执行完成之后程序退出了,故而出现了部分成功部分没成功的结果。
声明:此仅仅作为参考具体原因没有考证,只是凭自己直觉猜测。目的:1.作为笔记,加深下印象防止以后再次出现类似情况茫然不知所措。2.供网友们参考规避类似问题发生。