異常を投げた後、損失したのはスレッドですか?


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);
	}
}

 
実行結果、自分でやってみる