专栏名称: axb的自我修养
微博原创视频博主 不写代码和看动漫和瞎折腾就会死。
目录
相关文章推荐
51好读  ›  专栏  ›  axb的自我修养

今日工作总结:感觉之前的工作总结说的方法论越来越多,争取未来多说-20240410175442

axb的自我修养  · 微博  ·  · 2024-04-10 17:54

正文

请到「今天看啥」查看全文


2024-04-10 17:54

今日工作总结:

感觉之前的工作总结说的方法论越来越多,争取未来多说一些技术细节。

今天解决了两个问题,先说第一个:某个同学遇到一个java守护线程跑着跑着突然没日志了的问题。

遇到这类问题的解决思路很简单,守护线程的实现是个死循环,跑着跑着突然日志没了,要么是线程卡住了,要么线程没了。

所以先用jstack,看看线程是否还在,发现线程不见了。

查看代码,线程的循环里用了try..catch(Exception),在使用了try..catch的情况下线程崩溃,大部分都是因为抛出了Error,而不是Exception。

在java中,所有异常都继承自Throwable,但是从Throwable派生出了Exception 和Error,逻辑类的异常(比如NPE)继承自Exception,类加载错误、OOM都继承自Error。

因为这个问题可复现,所以很轻松的就复现出线程里的代码执行时由于类初始化失败,抛出了NoClassDefFoundError。最后发现是因为依赖冲突,A类在初始化时需要初始化B类,但是B类不存在,抛出Error,最终线程退出。

因为这类对于新人来说比较隐蔽,但是对于高龄程序员来说基本上是日常便饭,让我逮到机会狠狠的装了一回。 [并不简单]






请到「今天看啥」查看全文