[英]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.