linux中的死java线程发生了什么?
我的项目中有一个NullPointerException,我想评估一下这个问题的严重性。异常是在线程完成其任务并即将死亡之前抛出的。 我的代码未能捕获此例外,因此线程已死亡 下面是一个简单的情况模拟:linux中的死java线程发生了什么?,java,linux,multithreading,exception,stability,Java,Linux,Multithreading,Exception,Stability,我的项目中有一个NullPointerException,我想评估一下这个问题的严重性。异常是在线程完成其任务并即将死亡之前抛出的。 我的代码未能捕获此例外,因此线程已死亡 下面是一个简单的情况模拟: 公共类测试扩展线程{ 公共静态void main(字符串[]args)引发InterruptedException{ 测试线程=新测试(); thread.start(); while(true){ System.out.println(“我还在这里!”); 睡眠(1000); } } 公开募捐{
公共类测试扩展线程{
公共静态void main(字符串[]args)引发InterruptedException{
测试线程=新测试();
thread.start();
while(true){
System.out.println(“我还在这里!”);
睡眠(1000);
}
}
公开募捐{
字符串s=null;
int len=s.length();//导致NullPinterException
}
}
我的问题是:这个可怜的线程现在会发生什么?它的linux文件描述符被释放了吗?此类代码中是否存在任何可能出现的稳定性或内存问题?这与线程无关。看看你的代码:
String s = null;
int len = s.length();
调用s.length()
时,s
确实是null
导致NullPointerException
。
将一些值赋给
s
,您将得到它的长度。处理与任何其他终止线程没有区别。在此之前发生的一件事是根据规则(特定的线程
,线程组
,所有线程)搜索,但除此之外,“正常”清理过程如下。与“正常”终止相比,当线程被未捕获异常终止时,系统资源(取决于线程
实现)或内存问题没有特定的后果。这是他的问题,抛出异常后线程会发生什么情况。谢谢!这非常有用。(注意:编辑以强调“系统”应该保持运行的事实)线程没有文件描述符。