java中Runnable和Callable之间的区别
时间:2020-02-23 14:34:08 来源:igfitidea点击:
Runnable和可调用的接口都用于多线程环境中。
可调用的java.util.concurrent.callable包和java.lang.Thread中的可持续包。
Java中Runnable接口和Callable接口之间的差异
- Runnable在Java 1.0版本中引入,而可调用是延长版本的Runnable,并在Java 1.5中引入,以解决Runnable的限制。
- runnable不返回任何值,其返回类型是void,而可调用具有返回type.so,完成任务后,我们可以使用Get()方法的未来类方法.Future类具有各种方法,如Get,取消我们可以通过它获取或者执行各种操作的ISDONE:TASKS.EX:
//Runnable interface method's run method has return type as void public void run() { } //Callable interface method's call method has return type as generic V V call() throws Exception; { }
可调用的是通用接口意味着实现类将决定它将返回的值类型。
- Runnable不会抛出检查异常,而可调用抛出检查的异常(即在编译时检查的例外),因此,在编译时,我们可以识别错误。
- 在Runnable中,我们覆盖Run()方法在可调用中,我们需要覆盖Call()方法。
- 当我们在完成EX完成任务后我们不想要任何返回值时使用runnable:当我们想要获得计算结果时,使用可调用的时,使用可调用。
- 首先,我们创建类的类实例,它具有可运行的接口,并且在创建线程类的实例之后,而不是通过Runnable类的对象作为线程类中的参数。
RunnableClass rc=new RunnableClass(); Thread t=new Thread(rc); t.start();
在可调用的情况下,我们无法将可调用的线程传递到执行,因此我们需要使用ExecutorService来执行可调用对象。