抛了异常之后,损失的是一个线程?

我们来看这段代码:
package cn.rjb.test;

public class Test {
	
	public static void main(String args[]){
		
		for(int i =0 ; i< 10 ;i++){
			
			if(i%3== 0){
				thread(("a"+i));
			}else{
				thread((""+i));
			}
		}
		
	}
	
	public static void thread(String str){
		final String a =str;
		new Thread(
				new Runnable(){
					public void run(){
						method(a);
						System.out.println(a+"这里执行!");
					}
				}
		).start();
	}
	
	public static void method(String a){
		Integer.parseInt(a);
	}
}

 

 

打印结果:

 

1这里执行!
2这里执行!
Exception in thread "Thread-3" java.lang.NumberFormatException: For input string: "a3"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:447)
	at java.lang.Integer.parseInt(Integer.java:497)
	at cn.rjb.test.Test.method(Test.java:31)
	at cn.rjb.test.Test$1.run(Test.java:23)
	at java.lang.Thread.run(Thread.java:619)
Exception in thread "Thread-0" java.lang.NumberFormatException: For input string: "a0"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:447)
	at java.lang.Integer.parseInt(Integer.java:497)
	at cn.rjb.test.Test.method(Test.java:31)
	at cn.rjb.test.Test$1.run(Test.java:23)5这里执行!
7这里执行!
4这里执行!

	at java.lang.Thread.run(Thread.java:619)
Exception in thread "Thread-9" java.lang.NumberFormatException: For input string: "a9"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:447)
	at java.lang.Integer.parseInt(Integer.java:497)
	at cn.rjb.test.Test.method(Test.java:31)
	at cn.rjb.test.Test$1.run(Test.java:23)
	at java.lang.Thread.run(Thread.java:619)
8这里执行!
Exception in thread "Thread-6" java.lang.NumberFormatException: For input string: "a6"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:447)
	at java.lang.Integer.parseInt(Integer.java:497)
	at cn.rjb.test.Test.method(Test.java:31)
	at cn.rjb.test.Test$1.run(Test.java:23)
	at java.lang.Thread.run(Thread.java:619)

 

 

抛了异常之后,线程就停止了,并且从异常抛出处后面的代码也不会执行了。

这是我从程序执行的结果看来的,大家有什么意见呢?

 

 

 

解决:

 

在抛出异常出使用 try--catch  进行捕获,后面就可以继续执行了。

 

看下面的代码,就可以正常执行了。

 

package cn.rjb.test;

public class Test {
	
	public static void main(String args[]){
		
		for(int i =0 ; i< 10 ;i++){
			
			if(i%3== 0){
				thread(("a"+i));
			}else{
				thread((""+i));
			}
		}
		
	}
	
	public static void thread(String str){
		final String a =str;
		new Thread(
				new Runnable(){
					public void run(){
						try{
							method(a);
						}catch(Exception e){
						}
						System.out.println(a+"这里执行!");
					}
				}
		).start();
	}
	
	public static void method(String a){
		Integer.parseInt(a);
	}
}

 

 执行结果,自己去试下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值