微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

发生了什么事在Linux死亡Java线程?

我的项目中有一个NullPointerException,我想评估这个问题的严重性。 在线程完成它的任务之前抛出exception,无论如何将会死亡。 我的代码没有抓住这个例外,所以线程已经死了。

这是一个简单的模拟情况:

public class Test extends Thread { public static void main(String[] args) throws InterruptedException { Test thread = new test(); thread.start(); while(true) { System.out.println("I'm still here!"); Thread.sleep(1000); } } public void run() { String s = null; int len = s.length(); // causes NullPinterException } }

我的问题是:现在会发生什么事情发生在这个可怜的线程? 它的linux文件描述符被释放了吗? 在这种types的代码中是否会出现任何稳定性或内存问题?

我可以让Visual Studio用户定义的C ++exception中断开吗?

Linux上来自共享对象(.so)的例外情况

在使用java web start实现自动更新桌面应用程序时出现AWTPermissionexception

由于EINTR epoll_wait失败,该如何解决

在命令提示符下无法捕获KeyboardInterrupt两次?

使用Delphi删除Windows防火墙规则(例外)

如何在这种情况下保护代码免受崩溃

在这个exception消息中引用了什么“配额”:没有足够的配额可用于处理此命令

SEHexception代码中位31和30的含义是什么?

什么错误/exception触发Windows错误报告?

处理与任何其他终止的线程没有什么不同。 之前发生的一件事就是根据规则(特定的Thread , ThreadGroup ,所有线程)搜索一个UncaughtExceptionHandler ,但除此之外,正常的清理过程如下所示。 当一个线程被一个未被捕获的异常终止时,与“正常”终止相比,系统资源(取决于Thread实现)或内存问题没有特定的后果。

这根本不是关于线程的。 看看你的代码

String s = null; int len = s.length();

当你调用s.length() , s确实是null ,导致NullPointerException 。 给s分配一些值,你会得到它的长度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐