本地多线程测试的时候报ExceptionInInitializerError

问题由来:

之前在做一个异步的功能时在本地调试,结果报了ExceptionInInitializerError。

问题分析:

通过翻百度发现这个错误应该是在静态变量初始化,或者静态代码块执行的时候报错。但是事实上我是在调公司的dal组件做数据库操作,一开始遇到多线程的问题首先怀疑是不是有什么地方用了ThreadLocal,但发现,如果主线程join()子线程,则不会报错,故排除ThreadLocal的原因。

解决方案:

  1. 首先一定要给线程/线程池加上异常Handler,这个一定是最关键的。
  2. 在@Test中做多线程的测试时,一定注意要保证主线程存活,sleep,join都可以。

问题原因:

我猜测应该就是test里主线程死掉了,然后导致某些静态变量丢失,或者初始化失败,把主线程阻塞即不会报错。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×