2017-05-25 12 views
0

スレッド通信の仕組みはWebアプリケーションとSimple javaプログラムでどのように違いますか。下記の質問に私を案内してください。文を間違えて無視してください。スレッド通信単純なJavaプログラムとJava Webアプリケーション

は、私は、単純なJavaクラスのプログラム上

package com.scjp.chapter.Exception; 
public class ThreadException extends Thread{ 
     public void run(){ 
     show(); 
     display(); 
    } 

    private void display() { 
     System.out.println(ThreadException.currentThread().getName() + " Display"); 
    } 

    private void show() { 
     int i = 10/0; 
     System.out.println(i); 
    } 

    public static void main(String[] args) { 

     ThreadException thread1 = new ThreadException(); 
     ThreadException thread2 = new ThreadException(); 
     ThreadException thread3= new ThreadException(); 

     thread1.setName("thread1"); 
     thread2.setName("thread2"); 
     thread3.setName("thread3"); 

     thread1.start(); 
     thread2.start(); 
     thread3.start(); 

    } 
} 

がcontent.All 3は、showメソッド算術例外をスローして表示され印刷されませんがあるとします。 しかし、show()を先に呼び出してshow()を呼び出すと、次に、プログラムはdisplay()の出力を生成しているだけでなく、算術例外もスローします。出力順序も変化しています。 私の質問はdisplay()の前にshow()を呼び出すときにdisplay()メソッドの出力が来ない理由です。

以下のExceptionコンセプトによれば、例外がスローされた後に行が実行されるべきではないため、スレッド1が例外をスローした場合、他のスレッド2スレッドはさらなるコードを実行しません。

+1

スレッドは独立して実行されます。なぜ、あるスレッドが例外をスローすると他のスレッドが停止するのでしょうか? –

答えて

0

display()の前にshow()を呼び出すと、display()メソッドの出力が表示されません。

show()は例外をスローするため、メソッドの実行が停止するためです。スレッド1は、例外をスローした場合

は、他のスレッド2スレッドは、さらにコードを実行するべきではありません

はい、それはすべきで、各スレッドが実行する独自の...スレッドを持っているので。その命令は、他の実行スレッドと並行して実行され、スレッドでスローされた例外は別のスレッドに影響を与えません。これは基本的にスレッドの全体のポイントです。スレッド間通信の仕事は、Webアプリケーションと簡単なJavaプログラム

で異なる方法

はそうではありません。

関連する問題