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来执行可调用对象。