2017-05-25 60 views
0

線程溝通工作是如何在Web應用程序和簡單的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三是扔秀法算術異常。 但是,如果我們調用顯示()之前,以顯示()。然後程序生成display()的輸出以及拋出Arithmetic異常。並且輸出順序正在改變。 所以我的問題是,爲什麼當會調用顯示之前顯示()顯示()方法的輸出不來(?)。

根據以下線路異常拋出之後,所以如果線程1是引發異常,然後其他線程兩個紗線不應該執行進一步的代碼不應該執行異常的概念。

+1

線程獨立運行。爲什麼一個線程拋出異常會導致其他線程停止? –

回答

0

爲什麼在display()之前調用show()之前display()方法輸出不會來?

因爲show()拋出異常,從而導致方法執行停止。

這在線程拋出異常,然後其他線程兩個紗線不應執行進一步的代碼

是的,它應該的,因爲每個線程都有自己的...的執行線程。其指令並行執行,以執行的其他線程,並在線程拋出的異常沒有在一個單獨的線程有任何影響。這基本上是線程的全部要點。

線程溝通工作是如何在Web應用程序和簡單的Java程序

不同事實並非如此。