簡體   English   中英

在簡單的Java程序和Java Web應用程序中的線程通信

[英]Thread communication In simple java program and in Java web application

Web應用程序和簡單Java程序中線程通信的工作方式不同。 請引導我進行以下查詢。 嘗試敘述問題,請忽略語法錯誤。

假設我有簡單的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();

    }
}

上面的程序不會打印顯示內容。所有三個都是拋出show方法的Arithmetic異常。 但是,如果我們在show()之前調用display()。 然后程序將生成display()的輸出並引發算術異常,並且輸出順序正在更改。 所以我的問題是,為什么在display()之前調用show()時,display()方法的輸出不會到來?

根據異常概念,以下行不應在異常引發后執行,因此,如果線程1引發異常,則其他線程兩個線程不應執行進一步的代碼。

為什么在display()之前調用show()時,display()方法的輸出不會到來?

由於show()引發異常,因此導致方法執行停止。

如果thread1引發異常,則其他兩個線程不應執行進一步的代碼

是的,應該,因為每個線程都有自己的執行線程。 它的指令與其他執行線程並行執行,並且在線程中引發的異常對單獨的線程沒有任何影響。 基本上,這就是線程的全部要點。

Web應用程序和簡單Java程序中線程通信的工作方式不同

不是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM