java多线程分析

在java多线程中编程中,异常处理非常重要,会影响应用程序的整体运行情况。
1、线程中可以捕捉的异常
我们在普通的方法中,是支持exception往上层throw,简单来说,就是当前逻辑不处理异常,捕捉到该异常后,向上层调用方传递,让上层调用方去处理,层层上扔,最后直接扔给用户(比如扔到html页面)。
线程的一个处理逻辑是:因为线程是调度的基本单位,因此有了错误,尽量自己解决。
因为线程是有逻辑的,一个线程就应该完成一种工作,而主线程把任务交给子线程以后,也不应该再去关注子线程的异常,因此子线程自己要处理异常;

@Override
    public void run() {
        while(true){
            try {
                throw new  Exception();//该异常必须要在run方法内捕捉
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }

假如java有编译器发现的异常,就必须在线程内捕捉。

2、动态运行的异常
但是异常很多,并不是所有的异常都能够在编译器捕捉到,在没有办法的情况下,异常还是抛出到线程外,这个时候,会造成该线程异常停止,比如除数为0的情况。

@Override
    public void run() {
        while(true){
            System.out.println(4/0);//除数为0,会抛出运行时异常

        }
    }

这里写图片描述

3、线程异常会不会影响其他线程
当我们一次创建了10个线程,其中有2个线程异常,会影响其他线程吗?答案是:在没有相互通信的情况下,是不会干扰其他线程的。
即在多线程中,线程是不会相互因为异常而产生直接干扰的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值