Разница между вызываемым и запускаемым в Java

Опубликовано: 30 Ноября, 2021

java.lang.Runnable - это интерфейс, который должен быть реализован классом, экземпляры которого предназначены для выполнения потоком. Есть два способа запустить новый поток - подкласс Thread и реализовать Runnable . Нет необходимости в подклассе Thread, если задача может быть выполнена путем переопределения только метода run ( ) для Runnable .

Callable interface and Runnable interface are used to encapsulate tasks supposed to be executed by another thread.

Давайте обсудим различия между двумя вышеупомянутыми интерфейсами, как они определены, обсудив их индивидуально позже, и сделаем вывод об основных различиях в табличном формате.

Вызываемый интерфейс

В вызываемом интерфейсе, который в основном генерирует проверенное исключение и возвращает некоторые результаты. Это одно из основных различий между готовящимся к выпуску интерфейсом Runnable, в котором значение не возвращается. В этом интерфейсе, он просто вычисляет результат еще генерирует исключение , если не в состоянии сделать это.

открытый интерфейс Callable <V> 
{
  V call () выдает исключение;
}
  1. Она объявлена в пакете «java.util.concurrent».
  2. Этот интерфейс также содержит единственный метод без аргументов, называемый методом call ().
  3. Мы не можем создать поток, передав вызываемый объект в качестве параметра.
  4. Callable может возвращать результаты. Метод callable call () содержит предложение «throws Exception», поэтому мы можем легко распространять проверенные исключения дальше.

Пример:

Ява

// Java Program to illustrate Callable interface
// Importing classes from java.util package
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
// Class
// Implementing the Callable interface
class CallableExample implements Callable {
// Main driver method
public static void main(String args[])
{
// public Object call() throws Exception
Random generator = new Random();
Integer randomNumber = generator.nextInt( 5 );
Thread.sleep(randomNumber * 1000 );
return randomNumber;
}
}

Запускаемый интерфейс

Когда объект, реализующий этот интерфейс, используется для создания потока, запуск потока вызывает вызов метода запуска объекта в отдельно выполняемом потоке. Генерал. Контракт этого метода run () заключается в том, что он может выполнять любые действия.

 открытый интерфейс Runnable 
{
  public abstract void run ();
}
  • java.lang.Runnable - это интерфейс, который определяет только один метод, называемый run ().
  • Он представляет собой задачу в Java, которая выполняется Thread.
  • Есть два способа запустить новый поток с помощью Runnable: один - реализовать интерфейс Runnable, а другой - создать подкласс класса Thread.
  • Runnable не может возвращать результат вычислений, что важно, если вы выполняете некоторую вычислительную задачу в другом потоке, а Runnable не может генерировать проверенные исключения.

Пример

Ява

// Java Program to implement Runnable interface
// Importing FileNotFound class from
// input output classes bundle
import java.io.FileNotFoundException;
// Class
// Implementing the Runnable interface
public class RunnableImpl implements Runnable {
// Main driver method
public static void main(String[] args)
{
// Run method
public void run()
{
// Display message when the thread executes
System.out.println(
Thread.currentThread().getName()
+ ", executing run() method!" );
// Try block to check if any exception occurs
try {
throw new FileNotFoundException();
}
// Catch block to handle the exception
catch (FileNotFoundException e) {
// Display message
System.out.println( "Must catch here!" );
// Print the line number
// where exception occured
e.printStackTrace();
}
// Here forcefully it
int rem = 1 / 0 ;
}
}
Запускаемый интерфейс Вызываемый интерфейс
Это часть пакета java.lang начиная с Java 1.0. Это часть java.util.concurrent пакет начиная с Java 1.5.
Он не может вернуть результат вычисления. Может возвращать результат параллельной обработки задачи.
Он не может генерировать проверенное исключение. Он может генерировать проверенное исключение.
В исполняемом интерфейсе необходимо переопределить метод run () в Java. Чтобы использовать Callable, вам нужно переопределить call ()

Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .