Runnable VS Callable Interface in Java
-
Die
Runnable
-Schnittstelle in Java -
Das
Runnable
-Schnittstellenbeispiel in Java -
Die
Callable
Schnittstelle in Java -
Das
Callable
-Schnittstellenbeispiel in Java -
Runnable
VSCallable
-Schnittstelle in Java
Dieses Tutorial stellt den Unterschied zwischen Runnable
- und Callable
-Schnittstellen mit Beispielen in Java vor.
Die Runnable
-Schnittstelle in Java
Runnable
ist eine Schnittstelle, die zum Erstellen und Ausführen von Threads in Java verwendet wird. Es hat nur eine einzige abstrakte Methode run()
und wird auch als Functional
Schnittstelle bezeichnet.
Unten sehen Sie die Signatur der Runnable
-Schnittstelle und ihrer SAM-Methode.
@FunctionalInterface public interface Runnable
void run() // Single Abstract Method
Das Runnable
-Schnittstellenbeispiel in Java
Jede Klasse, die einen Thread erstellen und ausführen möchte, muss entweder ein Runnable
-Interface implementieren oder die Thread
-Klasse erweitern.
Das Runnable
-Interface stellt eine run()
-Methode zur Verfügung, die in der Basisklasse überschrieben werden muss. Diese Methode wird implizit von der Methode start()
ausgeführt. Siehe das Beispiel unten.
public class SimpleTesting implements Runnable {
public static void main(String[] args) {
new Thread(new SimpleTesting()).start();
}
@Override
public void run() {
System.out.println("Running a thread");
}
}
Ausgabe:
Running a thread
Die Callable
Schnittstelle in Java
Das Callable
ist eine Schnittstelle und ähnelt der Runnable
-Schnittstelle. Es enthält auch eine einzige abstrakte Methode, call()
.
Diese Schnittstelle ist für Klassen konzipiert, deren Instanzen möglicherweise von einem anderen Thread ausgeführt werden. Die Signatur der Callable
-Schnittstelle und -Methode ist unten:
Die Klasse Executors
enthält Hilfsmethoden zur Konvertierung in Callable
-Klassen von anderen gängigen Formen.
@FunctionalInterface public interface Callable<V>
V call() throws Exception
Das Callable
-Schnittstellenbeispiel in Java
Wir haben die Callable
-Schnittstelle implementiert und ihre call()
-Methode überschrieben. Wir können jedes Objekt zur Methode call()
bringen.
Siehe das Beispiel unten.
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;
public class SimpleTesting implements Callable<Integer> {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService executorService = Executors.newSingleThreadExecutor();
SimpleTesting st = new SimpleTesting();
Future<Integer> future = executorService.submit(st);
int result = future.get().intValue();
System.out.println("product " + result);
}
@Override
public Integer call() throws Exception {
int product = 23 * 12;
return product;
}
}
Ausgabe:
product 276
Runnable
VS Callable
-Schnittstelle in Java
Die folgende Tabelle enthält einige Punkte zum Verständnis der Java-Schnittstelle Runnable
und Callable
.
Runnable |
Callable |
---|---|
Die implementierende Klasse muss ihre Methode run() entsprechend überschreiben. |
Die implementierende Klasse muss ihre Methode call() entsprechend überschreiben. |
Der Rückgabetyp der Methode run() ist void und gibt daher nichts an den Aufrufer zurück. |
Der Rückgabetyp der Methode call() ist ein Objekt. Es kann ein String, eine ganze Zahl usw. sein. |
Die Methode run() wirft keine Ausnahme. |
Die Methode call() kann während der Ausführung eine Ausnahme auslösen. |
Es kann verwendet werden, um Threads in Java zu erstellen. | Es kann nicht zum Erstellen von Threads verwendet werden. |