线程通信 在简单的Java程序和Java Web应用程序中



线程通信的工作方式在Web应用程序和Simple 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(( 之前调用 display((。然后程序正在生成 display(( 的输出以及抛出算术异常。输出顺序正在发生变化。所以我的问题是为什么 display(( 方法输出在 display(( 之前调用 show(( 时没有出现?

根据异常概念,下面的行不应该在异常抛出后执行,所以如果thread1抛出异常,那么其他线程两个线程不应该执行进一步的代码。

为什么 display(( 方法输出不会在 display(( 之前调用 show(( ?

因为 show(( 会抛出异常,从而导致方法执行停止。

如果线程 1 抛出异常,则其他线程 2 线程不应执行进一步的代码

是的,它应该,因为每个线程都有自己的...执行线程。它的指令与其他执行线程并行执行,线程中引发的异常对单独的线程没有任何影响。这基本上是线程的全部意义。

线程通信在Web应用程序和简单Java程序中的工作方式有何不同

不是。

最新更新