JAVA中Callable的call方法抛出的异常会抛到那里?

Python015

JAVA中Callable的call方法抛出的异常会抛到那里?,第1张

调用的的这个类就要负责接受抛出异常现则处理异常或者继续抛出。

Callable接口实际上是属于Executor框架中的功能类,Callable接口与Runnable接口的功能类似,但提供了比Runnable更加强大的功能。

Callable可以在任务结束的时候提供一个返回值,Runnable无法提供这个功能,Callable的call方法分可以抛出异常,而Runnable的run方法不能抛出异常。

扩展资料:

注意事项:

对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝,又是从事最基础工作的劳动人民—既拥有每一个对象的所有权,又担负着每一个对象生命开始到终结的维护责任。

对于Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,而且不容易出现内存泄漏和内存溢出问题。

因为Java程序员把内存控制的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误将会成为一项异常艰难的工作。

参考资料来源:百度百科-Java

参考资料来源:百度百科-callable

线程提交执行的时候就会被调用,就像run方法一样,只不过这里在未来可以得到call执行的结果

import java.util.ArrayList

import java.util.concurrent.Callable

import java.util.concurrent.ExecutionException

import java.util.concurrent.ExecutorService

import java.util.concurrent.Executors

import java.util.concurrent.Future

import java.util.concurrent.TimeUnit

class TaskWithResult implements Callable<String>{

private int id

private static int count =10

private final int time =count--

public TaskWithResult(int id){

this.id = id

}

@Override

public String call() throws Exception {

TimeUnit.MILLISECONDS.sleep(100)

return "Result of TaskWithResult : "+ id+", Time= "+time

}

}

public class CallableDemo {

public static void main(String[] args) throws InterruptedException, ExecutionException {

 ExecutorService exec = Executors.newCachedThreadPool()

 ArrayList<Future<String>> results =new ArrayList<Future<String>>()

 for(int i=0i<10i++){

 results.add(exec.submit(new TaskWithResult(i)))

 }

 

 for(Future<String> fs : results){

 System.out.println(fs.get())

 }

}

}