Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从正在运行的线程捕获异常_Java_Multithreading - Fatal编程技术网

Java 从正在运行的线程捕获异常

Java 从正在运行的线程捕获异常,java,multithreading,Java,Multithreading,我想从正在运行的线程捕获一个异常,并在调用线程中处理它。我怎样才能做到最好 try { Runnable connect = new Runnable() { public synchronized void run() { try { ... some code requiring long time } catch(Exception e) { ..I want to catch here and send to call

我想从正在运行的线程捕获一个异常,并在调用线程中处理它。我怎样才能做到最好

try {
  Runnable connect = new Runnable() {
    public synchronized void  run() {
      try {
        ... some code requiring long time
      } catch(Exception e) {
        ..I want to catch here and send to calling thread
      }
    }
  }

  synchronized(connect) {
    new Thread(connect).start();
    connect.wait();
    ...if exception then handle it
    ...keep on with code if no exception occurred
  }

} catch(Exception e) {
}

最好的方法是不要直接使用线程,而是使用线程。如果愿意,可以通过线程运行,也可以通过向执行者提交可调用的(首选方法)来获得未来。Future为您提供了一种方便的方式来等待任务完成并处理结果(常规或例外)。

我认为您需要使用与并发相关的类和Future。