Java 从其他线程捕获异常?

Java 从其他线程捕获异常?,java,multithreading,exception,Java,Multithreading,Exception,我正在编写一个应用程序,将利用多线程。有一个主线程正在启动另一个线程。我想要完成的是,当一个启动的线程抛出异常时,主线程应该停止启动线程。它看起来或多或少像这样: class SomeClass { boolean launchNewThread = true; public static void main() { while (launchNewThread) { try { AnotherClass.run(); } catc

我正在编写一个应用程序,将利用多线程。有一个主线程正在启动另一个线程。我想要完成的是,当一个启动的线程抛出异常时,主线程应该停止启动线程。它看起来或多或少像这样:

class SomeClass {
boolean launchNewThread = true;
public static void main() {
    while (launchNewThread) {
        try {
            AnotherClass.run();
        } catch (CrossThreadException e) {
            launchNewThread = false;
        }
    }
}
}

class AnotherClass implements Runnable {
    public void run() {
        if (a=0) throw new CrossThreadException();
}

}

您应该自己做-捕获异常并以某种方式将其传递到启动线程


还有一个概念,它已经做到了。您应该以未来方式启动线程,并检查
isDone()
,并从
get()
捕获
ExecutionException
,如果未来的任务引发异常,将引发此异常。

您还可以使用中所述的侦听器

当在一个子线程内引发异常时,您可以从子线程调用类似于
listener.setLaunchNewThread(false)
的方法,这将更改父线程中布尔标志的值


另一方面,调用
AnotherClass.run()
不会启动新线程,而只会从同一线程中的另一个类调用run方法。使用
new-Thread(new-AnotherClass()).start()

是的,我知道,上面的代码只是。。。我会说伪代码。而且,我不希望主线程等待其他线程。它必须启动10个“子”线程,如果这些线程中没有出现异常,则可以启动下10个线程。主线程不必等待。它将继续创建线程,除非子线程之一通过侦听器更改launchNewThread的值。